我试图将<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.
我该怎么做这个绑定?
默认情况下,该<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>,否则默认情况下它会呈现为列表框而不是下拉列表。