【发布时间】:2013-12-19 15:56:19
【问题描述】:
我正在尝试使用<p:dataTable> 来显示从<p:selectOneMenu> 列表中选择的对象的内容。
<p:selectOneMenu> 已正确填充选项。然而:
- 当我从
<p:selectOneMenu>中选择一个项目时,<p:dataTable>未更新 - 服务器日志显示
#{MB.selectedDatabase}的值为null。 -
#{MB.setSelectedDatabase()}永远不会被调用。
XHTML:
<h:form id="form">
<h:messages id="messages" />
<p:panelGrid columns="2">
<p:outputLabel value="Data:" />
<p:selectOneMenu immediate="true" id="customDatas" value="#{MB.selectedDatabase}" >
<p:ajax execute="customDatas" render="infos" listener="#{MB.whatIsSelected()}" />
<f:selectItem itemLabel="Select Data" itemValue="" />
<f:selectItems value="#{MB.datas}" var="data" itemLabel="#{data.name}" itemValue="#{data.id}"/>
</p:selectOneMenu>
</p:panelGrid>
<p:dataTable value="#{MB.selectedDatabase.infos}" var="item" id="infos" >
<p:column >
<f:facet name="header">
<h:outputText value="Info"/>
</f:facet>
<h:outputText value="#{item.info}"/>
</p:column>
</p:dataTable>
</h:form>
来自我的 sessionScoped Bean 的部分代码:
public Data selectedDatabase;
public void whatIsSelected(){
logger.log(Level.SEVERE, "Selected data is : {0}", selectedDatabase.getName());
infoBusinessLocal.getinfosbydata(selectedDatabase);
}
public Data getSelectedDatabase() {
return selectedDatabase;
}
public void setSelectedDatabase(Data selectedDatabase) {
logger.log(Level.SEVERE, "Set selectedDB is invoked");
this.selectedDatabase = selectedDatabase;
}
【问题讨论】:
标签: jsf-2 primefaces selectonemenu