Jsf 为什么h:selectOneMenu onchange会被激发两次,为什么valueChangeListener在没有onchange的情况下不会被激发?
这是我在stackoverflow上的第一篇文章,我希望我做得对 我从几周前(可能2或3周)开始使用JSF和Xnet,我对h有两个问题:selectOneMenu 第一个问题:onchange事件被调用了两次。第一次是当我点击打开下拉列表时,第二次是当我选择一个选项时。我发现它第一次被调用是因为当我打开下拉列表时,所选的值发生了变化,它选择了列表中的第一个值。这是正常行为吗?Jsf 为什么h:selectOneMenu onchange会被激发两次,为什么valueChangeListener在没有onchange的情况下不会被激发?,jsf,jsf-1.2,selectonemenu,valuechangelistener,Jsf,Jsf 1.2,Selectonemenu,Valuechangelistener,这是我在stackoverflow上的第一篇文章,我希望我做得对 我从几周前(可能2或3周)开始使用JSF和Xnet,我对h有两个问题:selectOneMenu 第一个问题:onchange事件被调用了两次。第一次是当我点击打开下拉列表时,第二次是当我选择一个选项时。我发现它第一次被调用是因为当我打开下拉列表时,所选的值发生了变化,它选择了列表中的第一个值。这是正常行为吗? 第二个问题:如果我没有将onchange。。。再说一次,这是正常的行为吗 我不知道我在哪一个JSF版本上工作,但我知道它
第二个问题:如果我没有将onchange。。。再说一次,这是正常的行为吗 我不知道我在哪一个JSF版本上工作,但我知道它在2之前(类似于1.X……这不是我的错,我发誓,这是我公司的错) 这是代码,我不知道它是否有帮助。。。代码不是我的,我正在纠正一个错误 这是我的jsp上的h:SelectOne菜单
<h:panelGrid columns="2">
<h:selectOneMenu id="id_label" value="#{parentBean.bean.rapportId}"
immediate="true" onchange="this.form.submit();" valueChangeListener="#{parentBean.refreshDisplay}">
<f:selectItems id="list_label" value="#{parentBean.labelList}" />
</h:selectOneMenu>
</h:panelGrid>
我是JSF的初学者,所以有很多事情我不太了解,这就是为什么我不知道这是否正常此处回答了问题2:此处回答了问题2:
public String refreshDisplay(ValueChangeEvent event) {
Integer id = (Integer) event.getNewValue();
ObjectA process = (ObjectA) ObjectA.getInstance();
try {
BeanA rBean = (BeanA) process.findById(BeanA.class, new Object[] { id });
setBean(rBean);
} catch (MyException e) {
e.printStackTrace();
log.error(e, e);
}
return "";
}