我有一个无法解决的问题,我有一个带有值更改监听器的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..


}

最佳答案

我认为您可能想使用像这样的ajax事件:

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


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

10-01 14:30