この種の質問がここで何百万回も聞かれていることは知っていますが、関連する投稿で私の問題の解決策を見つけることができませんでした。
JSF 1.2
valueChangeListenerとして使用されるメソッドを持つリクエストスコープのBeanがあります。
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のスコープがセッションである場合は常に、チェックボックスのセッターとリスナーの両方が実行されますが、要求スコープでは実行されません。残念ながら、それ以外の手がかりは見つかりません。
どんなアドバイスも大歓迎です。さらなる説明の要求は大歓迎です。