我为此苦苦挣扎了很长时间。我正在更改代码,我需要将默认值设置为来自特立尼达的selectOneRadio元素。我有来自数据库的对象(例如称为result)。该对象具有属性decision。在选择元素值参数中使用了这种方式value="#{result.decision}"
。
现在我需要如果 result.decision 为空,则设置值为 True。如果值为 False,则让/设置值为 False。如果值为 True,则让/设置值为 True。我在模板中尝试过这样的事情:
<tr:selectOneRadio id="decision" value="#{viewBean.changeValueToOne(result)}" autoSubmit="true" immediate="true">
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
</tr:selectOneRadio>
viewBean 中的这个函数:
public Boolean changeValueToOne(ResultDTO result) {
if (result.getDecision() == null) {
result.setDecision(Boolean.TRUE);
}
return result.getDecision();
}
但是当我这样做时,我只得到了一个 String 值而不是 selectOneRadio 元素。只有“是”或“否”值。
如何将 selectOneRadio 元素的默认值设置为对象中的值并获得正常的 selectOneRadio,而不仅仅是一个值。
编辑
这是来自模板的代码。决策是数据库中我需要更改值的对象:
<tr:selectOneRadio id="decisionYes" value="#{viewBean.defaultDecision}" valueChangeListener="#{viewBean.valueChangedOneRadioListener(decision)}"
autoSubmit="true" immediate="true">
<f:selectItems value="#viewBean.decisionStates}"/>
</tr:selectOneRadio>
这是来自 viewBean 的监听器方法:
public void valueChangedOneRadioListener(DecisionDTO decision, ValueChangeEvent event)
{
if(event.getNewValue() != null) {
if((Boolean)event.getNewValue().equals(Boolean.TRUE))
{
decision.setDecision(Boolean.TRUE);
} else {
decision.setDecision(Boolean.FALSE);
}
// this is variable used in selectRadio
this.setDefaultVyjadreni((Boolean)event.getNewValue());
}
}
当我运行此代码时,由于找不到方法而出现错误。
javax.faces.event.AbortProcessingException: Method valueChangedOneRadioListener not found