私の環境:W7、Eclipse Indigo 3.7.2、Tomcat 6.0.35、jdk 1.7.02、jsf 2.0(Mojarra 2.03)、JSTL1.2。より複雑なケースのカスケードドロップダウンを実装しようとして、最後の試行として、selecOneMenuからアイテムを選択し、そのコンテンツをf:ajaxエントリによってoutputTextにすぐに配置する非常に単純なxhmtlを作成しました。メニューは正しく表示されますが、選択を変更しても、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;
}
}