0

こんにちは、私は JSF アプリケーションを作成しています。実際、ドロップダウン リストを作成し、ドロップダウンから選択した値に従って結果を表示したいと考えています。誰かが助けてくれたら....ありがとう

ここに私のドロップダウンがあります

<h:form>
                <h:commandButton action="sample?faces-redirect=true" value="submit">
                    <h:selectOneMenu id="sampleSearch" value="#{cBean.id}">
                    <f:selectItem id="id" itemLable="idText" itemValue="By Text" />
                    <f:selectItem id="idnumeric" itemLable="idNumeric" itemValue="Number" />
                    <f:selectItem id="product" itemLable="Product" itemValue="Main Product" />
                    <f:selectItem id="lonumber" itemLable="loNumber" itemValue="LoNumber" />
                    <f:selectItem id="formula" itemLable="formula" itemValue="By Formula" />
                    </h:selectOneMenu>
                </h:commandButton>

            </h:form>
4

2 に答える 2

1

まず、コンポーネントを!<h:selectOneMenu>内にネストすることはできません。<h:commandButton>これがあなたの適切な構造です<h:form>

<h:form>
    <h:commandButton action="sample?faces-redirect=true" value="submit" />
        <h:selectOneMenu id="sampleSearch" value="#{cBean.id}">
            <f:selectItem id="id" itemLable="idText" itemValue="By Text" />
            <f:selectItem id="idnumeric" itemLable="idNumeric" itemValue="Number" />
            <f:selectItem id="product" itemLable="Product" itemValue="Main Product" />
            <f:selectItem id="lonumber" itemLable="loNumber" itemValue="LoNumber" />
            <f:selectItem id="formula" itemLable="formula" itemValue="By Formula" />
    </h:selectOneMenu>
</h:form>

次に、データベースからドロップダウン リスト オプションを取得するために、<f:selectItems>コンポーネントの使用を検討し (そしてそれらを削除し) 、マネージド Bean から componentsプロパティに<f:selectItem>を渡すことができます。List<T>value

は次のselectOneMenuようになります。

<h:selectOneMenu value="#{cBean.id}">
    <f:selectItems value="#{cBean.values}" 
                   var="item"
                   itemLabel="#{item.label}"
                   itemValue="#{item.value}"/>
</h:selectOneMenu>

マネージド Bean に関してはpublic List<T> getValues()、ドロップダウンに入力するオブジェクトのリストを返すメソッドを提供することになっています。

がやの String プロパティを持つTような複雑な Java オブジェクトの場合、 属性を使用して反復変数を取得できます。これをや属性で使用できます( を省略すると、ラベル値と同じになります)。ItemlabelvaluevaritemValueitemLabelitemLabel

まあ言ってみれば:

@ManagedBean
@RequestScoped
public class CBean {
    public List<Item> getValues() {
        List<Item> result = new ArrayList<Item>();
        //..call-back to web-service, db, etc. and populate the result variable.
        return result;
    }
}

クラスは次のItemようになります。

public class Item {
   private String label;
   private String value;

   //getters, setters.
}

ここでもっと読むことができます:

于 2013-08-26T13:23:43.350 に答える