当我按下此按钮时,该test()
方法无法打印任何值。并且System.out.println(person);
总是在中打印空handleCityChange()
,并且边框显示为红色,右上角跳出值无效的信息。我该如何解决?谢谢大家。
索引.xhtml
<h:body>
<h:form>
<p:fieldset legend="Modify" toggleable="true" toggleSpeed="200" collapsed="true">
<h:panelGrid columns="2" cellpadding="10" id="modify_change">
<h:outputLabel value="Department :"/>
<p:selectOneMenu id="modify" value="#{modify.department}" style="width: 150px">
<f:selectItem itemLabel="Choose Department" itemValue=""/>
<f:selectItems value="#{modify.departments}" />
<p:ajax update="modify_delete" listener="#{modify.handleCityChange()}" />
</p:selectOneMenu>
<h:outputLabel value="Choose Employee" />
<p:selectOneMenu id="modify_delete" value="#{modify.person}" style="width: 150px">
<f:selectItem itemLabel="Choose Employee" itemValue=""/>
<f:selectItems value="#{modify.persons}" />
</p:selectOneMenu>
</h:panelGrid>
<h:commandButton value="Go to Modify !" actionListener="#{modify.test()}"/>
</p:fieldset>
</h:form>
</h:body>
Java 代码
@ManagedBean
@SessionScoped
public class modify {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.mycompany_SuneCoolingSystem_war_1.0-SNAPSHOTPU");
EmployeeJpaController jpaController = new EmployeeJpaController(null, emf);
EntityManager e = jpaController.getEntityManager();
private Map<String, String> departments = new HashMap<String, String>();
private Map<String, String> persons = new HashMap<String, String>();
private Map<String, Map<String, String>> allocatoin = new HashMap<String, Map<String, String>>();
private String department;
private String person;
public modify() {
Query q = e.createNamedQuery("Employee.findAll");
List resultList = q.getResultList();
for (int i = 0; i < resultList.size(); i++) {
Employee result = (Employee) resultList.get(i);
departments.put(result.getDepartment(), result.getDepartment());
}
q = e.createNamedQuery("Employee.findByDepartment");
q.setParameter("department", department);
resultList = q.getResultList();
}
public void handleCityChange() {
if (department != null && !department.equals("")) {
Query q = e.createNamedQuery("Employee.findByDepartment");
q.setParameter("department", department);
List resultList = q.getResultList();
persons.clear();
for (int j = 0; j < resultList.size(); j++) {
Employee result = (Employee) resultList.get(j);
persons.put(result.getName(), result.getName());
}
} else {
persons = new HashMap<String, String>();
}
System.out.println(departments);
System.out.println(department);
System.out.println(persons);
System.out.println(person);
}
public void test() {
System.out.println(departments);
System.out.println(department);
System.out.println(persons);
System.out.println(person);
}
//getter() and setter()
}