我有一个简单的ice:SelectOneMenu
和ice:outputLabel
,我想要做的就是当我更改下拉列表中的值以设置标签中的文字时告诉我我更改了值新的价值是什么(简单的测试,一旦这个工作,我将实际用这个更新ice:dataTable
)
我已经在这工作了几天了。 This link给了我关于阶段和事件的一些很好的信息,我已经尝试了所有的解决方案,但似乎没有一个对我有用。这在asp.net中是一个非常重要的任务,我不明白为什么它在jsf中如此复杂。我想我应该提一下,我在页面上也有一个ice:selectInputDate
,当我点击图标打开日历进行日期选择时,我的SOM valuechangelistener要么最终被调用,要么终于呈现新的标签文本(我'猜猜后者)。谁能帮助我让这个工作?我非常感谢你的帮助,谢谢。
<ice:selectOneMenu valueChangeListener="#{easp$PartsInv.changeRC}" binding="#{easp$PartsInv.SOM_RC}" id="SOM_RC">
<f:selectItems binding="#{easp$PartsInv.SOM_RC_Items}" id="SOM_RC_Items" />
</ice:selectOneMenu>
<ice:outputLabel binding="#{easp$PartsInv.lblStatus}" id="lblStatus" style="color:red;" value=""></ice:outputLabel>
当前的java代码(尝试不同的事情多次更改):
//event raised when user chooses a new RC (Repair Center) value.
public void changeRC(ValueChangeEvent vce)
{
String oldVal = vce.getOldValue().toString();
if(oldVal != null){
String newVal = vce.getNewValue().toString();
this.lblStatus.setValue("RC changed to " + newVal);
if(!newVal.equals(oldVal)){
FacesContext.getCurrentInstance().renderResponse();
}
}
}