JSFでトグルボタンを作成するにはどうすればよいですか?
基本的に、「イン」と「アウト」の2つのボタンが必要です。それらは基本的に同じマネージドBeanを呼び出しますが、クリックするたびに1つを無効にし、もう1つを有効にする必要があります。その逆も同様です。これはどのように行うことができますか?ajax機能を使用する必要がありますか?
JSFでトグルボタンを作成するにはどうすればよいですか?
基本的に、「イン」と「アウト」の2つのボタンが必要です。それらは基本的に同じマネージドBeanを呼び出しますが、クリックするたびに1つを無効にし、もう1つを有効にする必要があります。その逆も同様です。これはどのように行うことができますか?ajax機能を使用する必要がありますか?
アクションメソッドで逆にする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
)実際にアクションを呼び出す前の属性。