2

"Granted" と "Dismessed" の 2 つの項目を持つ selectOneMenu があります。

<p:panelGrid columns="2">
    <p:outputLabel value="Result: "/>
    <p:selectOneMenu id="omResult" value="#{opcoesMB.result}" style="width: 200px">
        <f:selectItem itemLabel="Granted" itemValue="1"/>
        <f:selectItem itemLabel="Dismessed" itemValue="2"/>
    </p:selectOneMenu>
</p:panelGrid>

また、その下に 2 つの selectOneMenu があり、そのうちの 1 つは operationRestrictedList というリストからアイテムを取得します。この場合、「Granted」アイテムが選択された場合に使用されます。

<p:selectOneMenu id="omResultGranted" value="#{optionsMB.operationRestricted}" style="width: 200px">
    <f:selectItem itemLabel="Select..." itemValue="#{null}"/>
    <f:selectItems value="#{optionsMB.restricaoOperacaoList}" var="rest" itemLabel="#{rest.title}" itemValue="#{rest.id}"/>
</p:selectOneMenu>

もう 1 つはアイテムのリストを受け取ります。

<p:selectOneMenu id="omResultDesmissed" value="#{optionsMB.irregularity}" style="width: 200px">
    <f:selectItem itemLabel="Select... " itemValue="#{null}"/>
    <f:selectItems value="#{opcoesMB.irregularilityList}" var="irregula" itemLabel="#{irregula.description}" itemValue="#{irregula.id}"/>
</p:selectOneMenu>

私はそのような意味ではありませんでした.2つのselectOneMenuのみが必要でした.2番目は最初のselectOneMenuで選択された項目として設定されましたが、これを行う方法がわかりません.jsfの初心者です.誰かこれを行う方法を教えてください。

4

3 に答える 3

1

これを行うには、リスナーが必要で、2 番目の selectOneMenu を更新するだけです。

XHTML :

<p:selectOneMenu id="id1" value="#{bean.item1}">
    <f:selectItems value="#{bean.list1}" var="item" itemLabel="#{item.name}" itemValue="#{item.id}" /> 
    <p:ajax update="id2" listener="#{bean.listener}" />
</p:selectOneMenu>

<p:selectOneMenu id="id2" value="#{bean.item2}">
    <f:selectItems value="#{bean.list2}" var="item" itemLabel="#{item.name}" itemValue="#{item.id}" />
</p:selectOneMenu>

Bean 内では、リストに必要な値を入力するだけです。

豆 :

public void listener() {
    //Do some stuff for feeding you second list
    list2.add(...);
}
于 2014-05-16T20:55:31.497 に答える
0

その 2 番目の selectMenu は、バッキング Bean を介して AJAX を使用して動的に入力できます。

例:

<h:selectOneMenu value="#{bean.selected}">
                <f:selectItem itemValue="#{null}" itemLabel="Select..." />
                <f:selectItem itemValue="one" />
                <f:selectItem itemValue="two" />
                <f:selectItem itemValue="three" />
                <f:ajax listener="#{bean.listener}" render="result" />
</h:selectOneMenu>

バッキングビーン:

@ViewScoped
public class Bean implements Serializable {

    private String selected;
    private String result;
    private List conditionalList; /*<-- You'll need setter and getter */

    public void submit() {
        System.out.println("submit");
    }

    public void listener(AjaxBehaviorEvent event) {
        System.out.println("listener");
        result = "called by " + event.getComponent().getClass().getName();
        /* Add to list here */
        conditionalList.add(getSelected());
    }

    public String getSelected() {
        return selected;
    }

    public void setSelected(String selected) {
        this.selected = selected;
    }

    public String getResult() {
        return result;
    }

}

他の selectMenu を入力します。

<p:selectOneMenu id="result" value="#{bean.selected2}">
    <f:selectItems value="#{bean.conditionalList}" var="item" itemLabel="#{item.name}" itemValue="#{item.id}" />
</p:selectOneMenu>
于 2014-05-16T20:59:56.063 に答える