我的环境:W7、Eclipse Indigo 3.7.2、Tomcat 6.0.35、jdk 1.7.02、jsf 2.0(Mojarra 2.03)、JSTL 1.2。尝试为更复杂的情况实现级联下拉列表,作为最终试验,我编写了一个非常简单的 xhmtl,它从 selecOneMenu 中选择一个项目,并通过 f:ajax 条目立即将其内容放入 outputText 中。菜单显示正确,但是,当我更改选择时,outputText 没有任何反应。我不知道哪里错了:你能帮帮我吗?谢谢。
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/WEB-INF/template/BasicTemplate.xhtml">
<ui:define name="content">
<f:view>
<h:form>
<h:selectOneMenu id="firstDropDown" value="#{twoMenusBean.first}" style="width: 110px; ">
<f:selectItems value="#{twoMenusBean.items}" />
<f:ajax render="secondDropDown" immediate="true" ></f:ajax>
</h:selectOneMenu>
<h:outputText id="secondDropDown" value="#{twoMenusBean.first}" ></h:outputText>
</h:form>
</f:view>
</ui:define>
</ui:composition>
</html>
豆子:
package myJava;
@ManagedBean (name="twoMenusBean")
@SessionScoped
public class twoMenusBean {
private List<String> menu1List = new ArrayList<String>();
private String first;
public twoMenusBean(){
menu1List.add("item 1");
menu1List.add("item 2");
first ="item 1";
}
public String getFirst(){
return first;
}
public void setFirst(String first){
this.first = first;
}
public List<SelectItem> getItems(){
List<SelectItem> x = new ArrayList<SelectItem>();
for (int i = 0; i < menu1List.size() ;i++) {
x.add(new SelectItem(menu1List.get(i),menu1List.get(i)));
}
return x;
}
}