我正在使用带有两列的数据表,这些列将具有标签和selectOneMenu。
我需要动态显示selectOneMenu列表,我需要在bean中设置level id。 在commandbutton / commandLink中,我们可以选择在f:setPropertyActionListener的帮助下设置值。 我只是想知道在使用selectonemenu时如何设置值。 任何帮助将不胜感激。
<p:dataTable style="width:750px;" id="inResultTable" var="result"
value="#{RequestBean.independentFields}">
<p:column>
<f:facet name="header">
<h:outputText value=" " />
</f:facet>
<h:outputText value="#{result.field_label}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<ui:repeat value="#{RequestBean.independentFields}" var="itm">
<h:selectOneMenu value="#{RequestBean.field1Value}"
rendered="#{result.level_id==itm.level_id}">
<f:selectItems value="#{RequestBean.indField}" />
</h:selectOneMenu>
<f:setPropertyActionListener target="#{RequestBean.level_id}"
value="#{itm.level_id}"></f:setPropertyActionListener>
</ui:repeat>
</p:column>
</p:dataTable>
答案 0 :(得分:2)
您可以使用更改ajax事件。
当你的selectOneMenu中的某个项目发生变化时,ajax会在你的Bean中调用一些方法。
像这样:
<h:selectOneMenu value="#{RequestBean.field1Value}"
rendered="#{result.level_id==itm.level_id}">
<f:selectItems value="#{RequestBean.indField}" />
<f:ajax event="change" listener="#{yourBean.yourMethodToChangeSomeValue}" />
</h:selectOneMenu>
在您的方法中,您可以使用fieldValue的值或将参数传递给xhtml中的另一个Bean方法。