あなたの Bean はリクエストスコープであることを理解しています。そうでなければ、この問題は発生しません。これはタイミングの問題です。
このrendered
属性は、JSF ライフサイクルの「リクエスト値の適用」フェーズでも決定されます。ただし、送信された値は、後で JSF ライフサイクルの「モデル値の更新」フェーズ中にのみモデルに設定されます。したがって、rendered
属性が評価されるとき、非表示の入力から送信された値を取得するのではなく、プロパティのデフォルト値を取得します。
request スコープをview スコープに変更するオプションがない場合は、この問題を別の方法で解決する必要があります。<h:inputHidden>
を a に変更し、マップ上で<f:param>
値を挿入する最も簡単な方法の 1 つ:@ManagedProperty
#{param}
<h:commandButton value="Button"
action="#{bean.method}"
rendered="#{bean.conditon}"
>
<f:param name="condition" value="#{bean.condition}" />
</h:commandButton>
type="submit"
(すでにデフォルトであるため、省略したことに注意してください)
と
@ManagedProperty("#{param.condition}")
private boolean condition;
以下も参照してください。