我正在使用JSF 2.0和PrimeFaces 3.4开发应用程序。我有两个下拉列表,根据选择的字段,应该在相应的输出文本中显示当前选中的项目。
我有一个<p:ajax update="outputTextId">
,在<p:selectOneMenu>
进行更改时会触发。问题是上面的下拉列表不会触发,但下面的下拉列表会正确触发。
项目编译正常,所有数据都正确存储。辅助bean位于会话范围内。这是相关的Facelets代码:
<h:form id="form">
<p:selectOneMenu id="subTypePickList" value="#{MappingBean.selectedSubtype}" valueChangeListener="#{MappingBean.changeListenerSubType}">
<p:ajax event="change" update="testSubTypeOut, itemList, queryArea, outputDisplayName" />
<f:selectItem itemLabel="Select Field" itemValue=""/>
<f:selectItems value="#{MappingBean.mappingStrings}" />
</p:selectOneMenu>
<br/>
<p:inputTextarea id="queryArea" value="#{MappingBean.expression}" />
<br/>
<p:selectOneMenu id="fieldPickList3" value="#{MappingBean.selectedFieldType}" valueChangeListener="#{MappingBean.changeListenerField}">
<p:ajax event="change" update="fieldPickList3, itemList, queryArea, outputDisplayName, testSubTypeOut"/>
<f:selectItem itemLabel="Select Field to Update" itemValue=""/>
<f:selectItems value="#{MappingBean.mappingStrings}" />
</p:selectOneMenu>
<br/>
<h:outputText id="testSubTypeOut" value="#{MappingBean.selectedSubtype}" />
<br/>
<h:outputText id="outputDisplayName" value="#{MappingBean.selectedFieldType}" />
<br/>
<p:commandButton id="executeButton" value="Execute" />
</h:form>
这是如何引起的?如何解决?
支持Bean:我删除了与特定问题无关的大量内容。
@ManagedBean(name = "MappingBean")
@SessionScoped
public class MappingBean {
private String selectedSubType;
private String selectedFieldType;
public MappingBean() {
}
下一部分只是从云应用程序中获取字符串列表。
吸气剂:
public String getSelectedSubtype(){
return selectedSubType;
}
public String getSelectedFieldType(){
return selectedFieldType;
}
塞特斯:
public void setSelectedSubType(String selectedSubType){
this.selectedSubType = selectedSubType;
}
public void setSelectedFieldType(String selectedFieldType){
this.selectedFieldType = selectedFieldType;
}
更改听众:
public void changeListenerSubType(ValueChangeEvent event){
selectedSubType = event.getNewValue().toString();
setSelectedSubType(selectedSubType);
}
public void changeListenerField(ValueChangeEvent event){
selectedFieldType = event.getNewValue().toString();
setSelectedFieldType(selectedFieldType);
}
希望我能更好地删除我认为非常无关的内容
谢谢!