我正在尝试发送< 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>
这是行不通的.当我调用我的action方法时,frente属性的值总是为null.
我该怎么做这个绑定?
解决方法
<选项>默认情况下,element不会被识别为passthrough元素.它没有在
table 8.4 of Java EE tutorial chapter 8.9 ‘HTML5-Friendly Markup’中列出.
您需要明确告诉底层的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>
请注意,我将第一个选项的值固定为显式#{null},并且我修复了设置选项标签的错误方法.此外,我还在< select>中添加了size =“1”,否则它默认呈现为列表框而不是下拉列表.