0

我想用 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绑定停止工作。selectedFoodnull

更有趣的是,如果我把这个

<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}" groupId="myForm:test1">

myForm:test1是正确的客户端 ID,然后 EL 绑定再次工作,所以看起来不是我的代码使绑定停止工作。JSF 是否需要客户端 IDname的标记属性?input

4

1 回答 1

2

成为 HTTP 请求参数名称,这name必须用于收集提交的 HTTP 请求参数值。这默认为 JSF 组件客户端 ID,并且收集发生在(或自身)的decode()方法中。您还需要覆盖/实现of以更改获取请求参数值的方式。RendererUIComponentdecode()Renderer

于 2012-07-10T11:14:59.780 回答