Hallo *,
habe eine kleine JSF (JEE) - Anwendung gebaut. Diese hat
Im Anhang befindet sich ein ear, welches sehr einfach über "mvn clean install" gebaut und direkt z.B. auf einem Wildfly deployed werden kann.
habe eine kleine JSF (JEE) - Anwendung gebaut. Diese hat
- eine Combobox. Sobald der Anwender einen Wert auswählt, wird ein valueChangeEvent gefeuert. Dieser wird von einem Listener aufgegriffen, der den neuen Wert im Model setzt.
- einen Button. Sobald der Button geklickt wird, wir das Form submitted und eine Aktion ausgeführt.
Im Anhang befindet sich ein ear, welches sehr einfach über "mvn clean install" gebaut und direkt z.B. auf einem Wildfly deployed werden kann.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:body>
<h:form>
<h:panelGrid columns="3">
<h:outputLabel value="Projekt"
for="projectSelector"/>
<h:selectOneMenu id="projectSelector"
value="#{timeBean.model.projectSelected}"
converter="projectConverter"
onchange="submit()"
valueChangeListener="#{timeBean.projectChanged}"
immediate="true"
required="true">
<f:selectItems value="#{timeBean.model.allProjects}"
var="singleProject"
itemValue="#{singleProject}"
itemLabel="#{singleProject.name}"/>
</h:selectOneMenu>
<h:message for="projectSelector"/>
</h:panelGrid>
<h:panelGrid columns="1">
<h:commandButton value="Absenden"
action="#{timeBean.myAction}"
ajax="false"/>
<h:outputLabel value="#{timeBean.model.resultValue}" rendered="#{not empty timeBean.model.resultValue}"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
Java:
@Named
@ViewScoped
public class TimeBean implements Serializable {
@Inject
private ValueProvider valueProvider;
@Inject
private Logger log;
private TimeModel model;
@PostConstruct
public void init() {
model = new TimeModel();
final List<ProjectEntity> allProjects = valueProvider.getAllProjects();
model.setAllProjects(allProjects);
model.setProjectSelected(allProjects.get(0));
}
public String myAction() {
log.info("myAction called");
model.setResultValue("action was called");
return null;
}
public void projectChanged(final ValueChangeEvent event) {
final ProjectEntity projectSelected = (ProjectEntity) event.getNewValue();
log.info("value changed from " + model.getProjectSelected().getId() + " to " + projectSelected.getId());
model.setProjectSelected(projectSelected);
final FacesContext context = FacesContext.getCurrentInstance();
context.renderResponse();
}
public TimeModel getModel() {
return model;
}
public void setModel(TimeModel model) {
this.model = model;
}
}
Java:
public class ProjectEntity {
private Long id;
private String name;
[...getter und setter...]
@Override
public boolean equals(final Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
final ProjectEntity that = (ProjectEntity) o;
System.out.println("equals comparing this " + this.getId() + " to that " + that.getId());
return id != null ? id.equals(that.id) : that.id == null;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
@Override
public String toString() {
return "ProjectEntity{" + "id=" + id + ", name='" + name + "'}";
}
}