设置selectonemenu的默认值

omi*_*goo 6 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>
Run Code Online (Sandbox Code Playgroud)

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

<h:selectOneMenu value="#{serverMB.selectedServerType}" default="serverMB.server.servertype">   // <- default
Run Code Online (Sandbox Code Playgroud)

或者像这样:

<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>
Run Code Online (Sandbox Code Playgroud)

Ani*_*ika 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>
Run Code Online (Sandbox Code Playgroud)