使用提交但在set和get方法之后触发valueChangeListener

时间:2013-06-11 14:14:52

标签: java jsf-2

我遇到了一个无法解决的问题,我有一个带有Value Chang Listener的selectOneListbox并提交onclick。它工作得很完美,但我注意到的问题是我对表单中其他元素的Set和Get方法在捕获ValueChangeListener的方法之后运行。我无法使用表单中元素的正确数据,如何解决这个问题?

所以我进入了我的selectOneListbox:

 <h:selectOneListbox onclick="Submit();" 
valueChangeListener="#{normalbesoksgrenController.setActiveFromAllList}" 
size="20" value="#{normalbesoksgrenController.currentVardTillfalleID}">

 <f:selectItems itemValue="#{item.vardTillfalle.id}" itemLabel="# 
{normalbesoksgrenController.getDateAndTime(item.getVardTillfalle().getStartTid())}"
var="item" value="#{normalbesoksgrenController.besokList}" ></f:selectItems>

             </h:selectOneListbox>

我得到了我的backbean:

public void setActiveFromAllList(ValueChangeEvent event)
{

    int id = Integer.parseInt(event.getNewValue().toString());

   Doing some stuff..


}

1 个答案:

答案 0 :(得分:1)

我想你可能想要像这样使用ajax事件:

    <h:selectOneListBox .....>
       <f:ajax execute="@form" listener="#{normalbesoksgrenController.setActiveFromAllList}" event="change" reder=":whatEverYouWant"  />
    </h:selectOneListBox>

execute属性定义在处理ajax请求之前应该提交的内容。