【发布时间】:2011-08-31 19:35:06
【问题描述】:
我有一个简单的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();
}
}
}
【问题讨论】:
-
关于呼救声(我编辑掉了),这在纸面上确实是 JSF2/RichFaces/PrimeFaces 的一项微不足道的工作。但不幸的是,我对 IceFaces 并不熟悉。我只能发布针对 JSF1/JSF2 的通用答案,并且在一定程度上也可以发布 RichFaces/PrimeFaces。这个问题太针对 IceFaces。
-
呵呵是的,我只知道没有其他人会在这个帖子上发帖,因为你是我最近 4 个 jsf 帖子中唯一的回复,而且我有点像个聪明人。无论如何,我想知道您的 JSF 目标答案是否会有所帮助,绝对值得一试:)
-
在 JSF 1.x 中这很复杂,因为它本身不支持 ajax 请求(或部分请求,正如 IceFaces 自己所说的那样)。在 JSF 2.x 中,这只是一个
<f:ajax>标记的问题。 RichFaces 有<a4j:ajax>和 PrimeFaces<p:ajax>。我相信 IceFaces 通过设置partialSubmit="true"属性实现了相同的效果(我不知道有任何标签)。但是你应该在某个地方放置一个动作监听器,绝对不是一个值更改监听器,因为它是在模型值更新之前调用的(这可能会覆盖值更改监听器中所做的任何更改)。 -
哇.. partialSubmit="true" 成功了。谢谢你。我不敢相信就是这样>
标签: jsf icefaces-1.8