我很长时间都在努力解决这个问题。我正在更改代码,我需要将默认值设置为Trinidad的selectOneRadio元素。我有来自数据库的对象(例如,称为结果)。此对象具有决定属性。在select元素值中,参数以value="#{result.decision}"
的方式使用。
现在我需要如果result.decision是空的设置值为True。如果value为False,则将/设置为False。如果value为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
答案 0 :(得分:0)
我为Trinidads selectOneRadio使用整数值。 您可以通过设置yourValue来设置默认值。 您使用valueChangeListener对更改事件做出反应。
<tr:selectOneRadio
id="maschineId"
value="#{yourBean.yourIntValue}"
valueChangeListener="#{yourValueChangeListener}"
autoSubmit="true">
<f:selectItem itemValue="1"/>
<f:selectItem itemValue="0"/>
</tr:selectOneRadio
你的backingBean在某种程度上看起来像这样:
public void yourValueChangeListener(ValueChangeEvent event)
{
if(event.getNewValue() == null)
return;
if((Integer)event.getNewValue() == 1)
{
//react on a change to 1
}
if((Integer)event.getNewValue() == 0)
{
//react on a change to 0
}
}
public int getYourIntValue() {
return yourIntValue;
}
public void setYourIntValue(int yourIntValue) {
this.yourIntValue = yourIntValue;
}