3

我正在使用一个包含两列的数据表,这些列将有一个标签和一个 selectOneMenu。

我需要动态显示 selectOneMenu 列表,为此我需要在 bean 中设置级别 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>
4

1 回答 1

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 方法。

于 2013-12-27T16:29:02.970 回答