【问题标题】:set default value for selectonemenu为 selectonemenu 设置默认值
【发布时间】:2013-11-18 13:28:02
【问题描述】:

我有一个这样的选择菜单:

<h:selectOneMenu value="#{serverMB.selectedServerType}"  >
    <f:converter binding="#{serverTypeConverter}"/>
    <f:selectItems value="#{serverMB.serverTypesList}" var="servertypes"
            itemLabel="#{servertypes.server_type_name}" />
    <f:ajax listener="#{serverMB.changeSelectedOneMenuServerType}" render="selectservertype"/>
</h:selectOneMenu>

我希望选择菜单的默认值是之前已填充的一个对象的值,如下所示:

<h:selectOneMenu value="#{serverMB.selectedServerType}" default="serverMB.server.servertype">   // <- default

或者像这样:

<h:selectOneMenu value="#{serverMB.selectedServerType}">
    <f:converter binding="#{serverTypeConverter}"/>
    <f:selectItem value"serverMB.server.servertype"/> <-   but this item was the first one and has been selected  
    <f:selectItems value="#{serverMB.serverTypesList}" var="servertypes"
            itemLabel="#{servertypes.server_type_name}" />
</h:selectOneMenu>

【问题讨论】:

  • 只需将此#{serverMB.selectedServerType} 设置为您的默认值,然后将 selectOne 设置为默认值
  • 我不明白你的意思,如何设置为我的默认值?
  • serverMB 上,在@PostConstruct 方法或什至在构造函数中渲染页面之前,您可以设置selectedServerType = objectThatHasTheDefaulValue,然后JSF 将完成剩下的工作。
  • 是的,谢谢,但是 jsf 没有像 selectonemenu list 的默认值这样的属性?
  • 它不需要,因为对象(值)是由 bean 控制的,那么当你在 bean 上设置对象时,它将评估为默认值。

标签: jsf


【解决方案1】:

如果你的对象在你调用页面时已经被填充,你可以这样做,如果没有,它会显示&lt;f:selectItem/&gt;消息:

<h:selectOneMenu value="#{serverMB.server.servertype}">
    <f:converter binding="#{serverTypeConverter}"/>
    <f:selectItem itemLabel="Select a Server..." />
    <f:selectItems value="#{serverMB.serverTypesList}" var="servertypes"
            itemLabel="#{servertypes.server_type_name}"/>
    <f:ajax listener="#{serverMB.changeSelectedOneMenuServerType}" 
            render="selectservertype"/>
</h:selectOneMenu>

【讨论】:

  • 我做到了,但它在列表末尾推送了选择服务器标签!
  • 将出现的服务器是属于您发送到页面的对象的服务器。这是您想要的吗?
  • 来自列表你怎么做?
【解决方案2】:

您也可以使用OmniFaces converter

这是我的例子。这对我来说可以。 (注意:Year 是一个对象。确保你已经实现了 equals。Year 仅是 nameid。)

<h:selectOneMenu value="#{bean.user.year}"
        converter="omnifaces.SelectItemsConverter">
    <f:selectItem itemLabel="Please select a year." itemValue="#{null}"
            noSelectionOption="true" />
    <f:selectItems value="#{bean.allyears}" var="year"
            itemValue="#{year}" itemLabel="#{year.name}" />
</h:selectOneMenu>

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 2014-03-21
    • 2014-09-03
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多