我想用 SelectOneRadio 做一些疯狂的分组,所以我决定创建我自己的自定义组件,允许我指定标签的name
属性<input>
(如您所知,name
这意味着单选按钮在同一个组中)。渲染器是正确的,所以我有一个<input>
曾经像这样渲染的
<input name="myForm:test1" id="myForm:test1:0" value="0" type="radio">
现在像这样渲染
<input name="foo" id="myForm:test1:0" value="0" type="radio">
但是,当我提交表单时,EL 停止工作(对于 h:commandButton 和 p:commandButton 也是如此)。所以如果我有这个
<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}">
然后 EL 工作,selectedFood
打印出更正的值,但如果我输入
<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}" groupId="foo">
这将name=foo
在<input>
标签中。然后EL绑定停止工作。selectedFood
是null
。
更有趣的是,如果我把这个
<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}" groupId="myForm:test1">
这myForm:test1
是正确的客户端 ID,然后 EL 绑定再次工作,所以看起来不是我的代码使绑定停止工作。JSF 是否需要客户端 IDname
的标记属性?input