0

シンプルなDropDownListを作りたいです。

<p:selectOneMenu id="starter" value="#{reportRegisterManagedBean.starter}" style="width:160px" converter="#{reportStarterConverter}" required="true" requiredMessage="Select Report Starter">
                           <ui:repeat value="#{reportRegisterManagedBean.startersSelectItems}" var="dss">
                                <f:selectItem  itemLabel="#{dss}" itemValue="#{dss}" itemDescription="TEST" />
                           </ui:repeat>
                        </p:selectOneMenu>

DropDownList<f:selectItems>代わりに使用すると<ui:repeat>非常にうまく機能しますが、<f:selectItems>コンポーネントitemDescription=(これは単純なツールチップのアナロジーです)は機能しません。<f:selectItem>Component itemDescription=(これは単純なツールチップのアナロジーです) 正常に動作しています。<f:selectItem>そのため、 andをそのitemDescription属性とともに使用することにしました。

4

4 に答える 4

3

ビューの<f:selectItem>ビルド時に追加する必要があります。ただし、<ui:repeat>ビューのレンダリング時に実行されます。ビューのビルド時に実行されるリピーターが必要です。JSTL<c:forEach>はそのようなものです。

<p:selectOneMenu ...>
    <c:forEach items="#{reportRegisterManagedBean.startersSelectItems}" var="dss">
        <f:selectItem ... />
    </c:forEach>
</p:selectOneMenu>

または、カスタム レンダラーを作成します。以下は、 に対してまったく同じことを行う例です<p:selectManyCheckbox>: p:selectManyCheckbox の Primefaces ツールチップ

于 2013-03-29T12:34:22.067 に答える
2

あなたは文字列配列が好きではないので。これは User クラスを使用したテスト済みの実際の例です。

public class FilterBean {

private List<User> uList = new ArrayList<User>();
private User selectedUser = new User();


public List<User> getuList() {
    User u1 = new User();
    u1.setName("Tom");
    u1.setDesc("worker");
    User u2 = new User();
    u2.setName("Peter");
    u2.setDesc("owner");

    uList.add(u1);
    uList.add(u2);

    return uList;
}

public void setuList(List<User> uList) {
    this.uList = uList;
}   

public User getSelectedUser() {
    return selectedUser;
}

public void setSelectedUser(User selectedUser) {
    this.selectedUser = selectedUser;
}
}   

そしてこれがJSF

    <p:selectOneMenu value="#{filterBean.selectedUser}"> 
        <f:selectItem itemLabel="Select One" itemValue="" />   
        <f:selectItems  value="#{filterBean.uList}" var="n" itemValue="#{n}" itemDescription="#{n.desc}" itemLabel="#{n.name}" />  
    </p:selectOneMenu> 

これはトムとピーターの説明を示しています:)

于 2013-03-29T14:21:44.210 に答える
1

でドロップダウン リストを作成する方法は次のprimefacesとおりです。

<p:selectOneMenu id="starter" value="#{reportRegisterManagedBean.starter.selectedItem}">  
        <f:selectItems value="#{reportRegisterManagedBean.starter.startersSelectItems}" />  
</p:selectOneMenu>  
于 2013-03-29T09:30:10.563 に答える
1

いくつかの例を試してみたところ、次の結果が得られました。

私はpojoでこれを持っています:

private String selectL;
private String[] listas;


public String[] getListas() {
    listas = new String[2];  
    listas[0] = "pirmas";
    listas[1] = "antras";
    return listas;
}

そして、このjsfは機能します(itemDescriptionは文字列でなければなりません):

    <p:selectOneMenu value="#{formBean.selectL}">   
        <f:selectItems  value="#{filterBean.listas}" var="n" itemDescription="#{n}2" />  
    </p:selectOneMenu>  

これはありません:/:

    <p:selectOneMenu value="#{formBean.selectL}">   
        <f:selectItems  value="#{filterBean.listas}" itemDescription="test2" />  
    </p:selectOneMenu>  

編集:

いくつかのテストの後、var を 2 番目の selectOneMenu に追加したところ、現在も機能しています。

    <p:selectOneMenu value="#{formBean.selectL}">   
        <f:selectItems  value="#{filterBean.listas}" var="n" itemDescription="test2" />  
    </p:selectOneMenu>  
于 2013-03-29T10:16:26.360 に答える