4

JSFでトグルボタンを作成するにはどうすればよいですか?

基本的に、「イン」と「アウト」の2つのボタンが必要です。それらは基本的に同じマネージドBeanを呼び出しますが、クリックするたびに1つを無効にし、もう1つを有効にする必要があります。その逆も同様です。これはどのように行うことができますか?ajax機能を使用する必要がありますか?

4

1 に答える 1

6

アクションメソッドで逆にするbooleanプロパティをdisabled用意し、両方のボタンの属性でそのプロパティを逆に使用します。

キックオフの例:

@ManagedBean
@ViewScoped
public class Bean {

    private boolean enabled;

    public void toggle() {
        enabled = !enabled;
    }

    public boolean isEnabled() {
        return enabled;
    }

}

<h:form>
    <h:commandButton value="Enable" action="#{bean.toggle}" disabled="#{bean.enabled}" />
    <h:commandButton value="Disable" action="#{bean.toggle}" disabled="#{not bean.enabled}" />
</h:form>

Ajaxは技術的には必要ありません。<f:ajax>ただし、ユーザーエクスペリエンスを向上させるために、両方のボタンに自由に追加してください。

@ViewScoped豆は今度は非常に必要です。1@RequestScopedつはリクエストの終了時に破棄され、次のリクエストで再作成されます。これにより、booleanがデフォルトに再初期化され、2回目のクリック後に機能しなくなるように見えます。これは、JSFが改ざん/ハッキングされたリクエストに対する保護の一環として、disabled(およびrendered)実際にアクションを呼び出す前の属性。

参照:

于 2013-02-04T17:54:02.800 に答える