HTML 5下拉列表和JSF 2.2

Vit*_*ira 5 jsf html5 jsf-2.2

我试图将<select>值发送给JSF托管bean,但我不知道如何制作它.我的代码是:

<select id="cb-frentes" required="required" jsf:value="#{checkstyleBean.frente}">
    <option value=""/>
    <ui:repeat var="frente" value="#{appBean.frentes}">
        <option value="#{frente}" label="#{frente}"/>
    </ui:repeat>
</select>
Run Code Online (Sandbox Code Playgroud)

这是行不通的.当我调用我的动作方法时,frente属性的值总是null.

我该怎么做这个绑定?

Bal*_*usC 4

默认情况下,该<option>元素不被识别为直通元素。它没有在Java EE 教程第 8.9 章“HTML5 友好标记”的表 8.4中列出。

您需要明确告知底层 JSF 组件。您可以使用该jsfc属性来做到这一点,令人惊讶的是,Java EE 7 教程中没有提及该属性(可能是因为它是 Facelets(视图技术)的一部分,而不是 JSF 的一部分)。

<select id="cb-frentes" required="required" size="1" jsf:value="#{checkstyleBean.frente}">
    <option value="#{null}" jsfc="f:selectItem" />
    <ui:repeat value="#{appBean.frentes}" var="frente" jsfc="f:selectItems">
        <option value="#{frente}">#{frente}</option>
    </ui:repeat>
</select>
Run Code Online (Sandbox Code Playgroud)

请注意,我将第一个选项的值明确修复为#{null},并且修复了设置选项标签的错误方法。此外,我还添加size="1"<select>,否则默认情况下它会呈现为列表框而不是下拉列表。