このコードは、私が思っていたこととまったく同じではありません。Ajax でプロパティを設定してから、1 つのコンポーネントを再レンダリングしようとしています。私の .xhtml は次のようになります
<h:form>
<h:commandButton value="Render!" >
<f:ajax render=":result" listener="#{eFindUser.findUser}" />
</h:commandButton>
</h:form>
<h:panelGroup id="result" layout="block" rendered="#{eFindUser.responseRendered}" >
This is some text that is supposed to be rendered later
</h:panelGroup>
バッキングビーンはこんな感じ
@Named(value = "eFindUser")
@ViewScoped
public class EFindUserManagedBean implements Serializable{
private boolean responseRendered = false;
/**
* Creates a new instance of EFindUserManagedBean
*/
public EFindUserManagedBean() {
}
public void findUser(AjaxBehaviorEvent abe) {
responseRendered = !responseRendered;
System.out.println("finding..... ("+ responseRendered+")" + this);
}
public boolean isResponseRendered() {
return responseRendered;
}
public void setResponseRendered(boolean responseRendered) {
this.responseRendered = responseRendered;
}
}
ボタンを再度クリックしても、プロパティは変更されません。サーバーログに次のメッセージがあります。
INFO: finding..... (true)backingbeans.EFindUserManagedBean@5736b751
INFO: finding..... (true)backingbeans.EFindUserManagedBean@23959d6f
マネージド Bean は、ビュー スコープである必要がある場合でも、リクエストがあるたびに作成されるため、明らかに何らかの問題があります。
panelgroup(id:"result") が可視性を変更できるようにするには、何を変更すればよいですか? リッチフェイスやその他のテクノロジーは許可されていません。
ご回答ありがとうございました