好吧,所以我多年来一直试图解决这个问题,但这是不可能的。我的xhtml中有一个带单选按钮的表单。表单中包含的单选按钮应该是一个对象列表,使用这些作为选择项。正确检索这些值并显示在单选按钮的选项中。但是,当我实际上试图通过调用等效的setter来保存其中一个值时,没有任何事情发生(即从不调用setter)。我的表格有以下结构:
...
<h:form id="xform">
<p:selectOneRadio id="supervisor" value="#{cntrl.demo}" layout="grid" columns="3">
<f:selectItems value="#{cntrl.demos}" var="s" itemLabel="#{s}" itemValue="#{s}"/>
</p:selectOneRadio>
<p:commandButton value="submit" action="#{cntrl.register}" update="xform"/>
</h:form>
我的Cntrl
类包含以下方法:
@Named
@ViewScoped
public class Cntrl implements Serializable{
public void register() {
//do some stuff
}
public void setDemo(Demo demo) {
this.demo = demo;
}
public List<Demo> getDemos() {
return demos;
}
///...more code
}
因此getDemos
已正确调用,按钮已正确填充等。但setDemo
永远不会被调用