我有一个无法解决的问题,我有一个带有值更改监听器的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请求之前应提交的内容。