【问题标题】:JSF <ui:repeat> componentJSF <ui:repeat> 组件
【发布时间】:2013-03-19 23:33:39
【问题描述】:

我想做简单的 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 是 enpty,如果我使用 &lt;f:selectItems&gt; 而不是 &lt;ui:repeat&gt; 效果很好,但 &lt;f:selectItems&gt; 组件 itemDescription=(这是简单的工具提示类比)不起作用。 &lt;f:selectItem&gt; 组件 itemDescription=(这是简单的工具提示类比)工作正常。这就是为什么我决定使用 and &lt;f:selectItem&gt; 及其 itemDescription 属性。

【问题讨论】:

  • DropDownList 是 enpty,如果我使用 而不是 效果很好,但 组件 itemDescription=(这是简单的工具提示类比)不起作用。 组件 itemDescription=(这是简单的工具提示类比)工作正常。这就是为什么我决定使用 及其 itemDescription 属性。
  • 无需将您的问题作为评论发布,update您的问题代替
  • 我正在尝试更新但不更新。原帖中有 不是复制词
  • 我用你的 cmets 更新你的问题,验证它并批准它。
  • 哪个字段包含您要在 DropDownList 中显示的列表? reportRegisterManagedBean.starterreportRegisterManagedBean.startersSelectItems ?

标签: java jsf-2 primefaces


【解决方案1】:

这是在primefaces 中创建下拉列表的方法:

<p:selectOneMenu id="starter" value="#{reportRegisterManagedBean.starter.selectedItem}">  
        <f:selectItems value="#{reportRegisterManagedBean.starter.startersSelectItems}" />  
</p:selectOneMenu>  

【讨论】:

  • 这有效,但 组件 itemDescription="" 不起作用,并且 itemDescription="" 有效,这就是我决定使用 和 及其 itemDescription 属性。
  • itemDescriptionf:selectItems 一起使用时,它需要一个ListThis 为您的问题提供了解决方案
  • 公开列表 startersSelectItems;这是列表
【解决方案2】:

我尝试了几个例子并得到了这个结果:

我在 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 添加到第二个 selectOneMenu 中,它现在也可以工作了:

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

【讨论】:

  • itemDescription="test2" 这行得通吗?我想动态地工具提示,即#{ds.name} 和 #{ds.description} 这仅在列表中的 SelectItem 中实现
  • 对我来说 itemDescription="#{n}2" 和 itemDescription="test2" 现在可以正常工作了。在 IE、FF 和 chome 上测试。
  • 好的,但我想列出,因为在我的列表中我已经放置了休眠实体,以及如何将实体放在字符串数组中,这是个坏主意
  • 我认为您不需要将其放入字符串数组中。这只是一个例子。只是这个 ds.name 应该是字符串。
【解决方案3】:

&lt;f:selectItem&gt; 需要在视图构建时添加。但是,&lt;ui:repeat&gt; 在视图渲染期间运行。您需要一个在视图构建期间运行的中继器。 JSTL &lt;c:forEach&gt; 就是这样一个。

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

或者,创建一个自定义渲染器。这是一个与&lt;p:selectManyCheckbox&gt; 完全相同的示例:Primefaces tooltip for p:selectManyCheckbox

【讨论】:

【解决方案4】:

因为你不喜欢 String 数组。 这是用户类的测试和工作示例:

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> 

这显示了 Tom 和 Peter 的 desc :)

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2023-04-07
    • 2011-04-30
    • 2011-04-17
    • 2012-01-29
    • 2014-02-04
    • 2013-05-11
    • 2014-01-03
    相关资源
    最近更新 更多