【发布时间】:2012-10-07 15:50:59
【问题描述】:
我有一个<p:selectOneMenu>,上面有String 条目和一个valueChangeListener。
查看:
<p:selectOneMenu value="#{myLdapEntry.oneMenuselectedValue}" effect="fade" style="font-size:12px;"
valueChangeListener="#{myLdapEntry.menuValueChanged}">
<f:selectItem itemLabel="" itemValue=""/>
<f:selectItems value="#{treeBean.objclasslist}" var="objclass"
itemLabel="#{objclass}" itemValue="#{objclass}" />
<p:column>
#{o} #{objclass}
</p:column>
<f:ajax event="change" render=":form:objclassAttrsValstab" />
</p:selectOneMenu>
型号:
List<String> objectClassList = new ArrayList<String>();
public void menuValueChanged(ValueChangeEvent vce) {
String newValue = vce.getNewValue().toString();
objectClassList.add(newValue);
System.out.println(objectClassList);
}
我想记住objectClassList 中以前选择的每个项目。但问题是它总是只包含最后一个选定的项目,而不是之前的项目。我什至尝试过使用Vector 而不是List,但结果仍然相同。
我认为valueChangeListener 方法每次都会创建一个新的bean 实例,因此objectClassList 每次都会重新初始化。
这是真的吗?这是如何引起的,我该如何解决?
【问题讨论】:
-
为什么不在构造函数中放置一个调试断点或日志语句来验证是否是这种情况?你的 bean 被放置在什么范围内?
-
我没有任何范围,所以它是默认值:requestScope,谢谢你 BalusC!
标签: jsf managed-bean valuechangelistener