设置selectonemenu的默认值

时间:2013-11-18 13:28:03

标签: jsf

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

<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>

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

<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>

2 个答案:

答案 0 :(得分:13)

如果在调用页面时已经填充了对象,则可以执行此类操作,如果不是,则会显示<f:selectItem/>消息:

<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>

答案 1 :(得分:2)

您也可以使用OmniFaces converter

这是我的例子。这对我来说可以。 (注意:年份是一个对象。请确保,您已实现等于。年仅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>