我知道这种类型的问题已经在这里被问过百万次了,但是我在相关帖子中找不到我的问题的解决方案。
JSF 1.2
我有一个请求范围的 bean,其方法用作 valueChangeListener:
class DoStuff{
...
public void step1ChkStuffIncluded_CheckedChanged(ValueChangeEvent event){
StuffDocument cd = (StuffDocument)getInfo("StuffDocument");
if(cd == null){
Logger.Error("DoStuff", "step1ChkStuffIncluded_CheckedChanged", "No stuff document (null)");
return;
}
if (step1ChkStuffIncludedChecked){
cd.handleChecked();
}
else{
cd.handleUnchecked();
}
}
...
}
通过selectBooleanCheckbox
如下组件(.jspx):
...
</h:panelGroup>
<h:panelGroup rendered="#{DoStuff.pnlStep1}">
<p>
<label for="step1ChkStuffIncluded">#{DoStuff.step1ChkStuffIncludedText}</label>
<h:selectBooleanCheckbox
id="step1ChkStuffIncluded"
onchange="submit();"
value="#{DoStuff.step1ChkStuffIncludedChecked}"
valueChangeListener="#{DoStuff.step1ChkStuffIncluded_CheckedChanged}">
</h:selectBooleanCheckbox></p>
</h:panelGroup>
<div id="someDiv">
...
在哪里
xmlns:h="http://java.sun.com/jsf/html"
每当 bean 的范围是会话时,复选框的设置器和侦听器都会执行,但不在请求范围内。不幸的是,我找不到除此之外的任何线索。
非常感谢任何建议。欢迎要求进一步澄清。