javascriptフラグに基づいてJSFコンポーネントのレンダリングを切り替える最も簡単な方法は何ですか?ユーザーがHTML5を有効にしているかどうかに基づいて、特定のものを表示したい...たとえば、ジオロケーション、ネイティブ日付ピッカーなど。
ありがとう
javascriptフラグに基づいてJSFコンポーネントのレンダリングを切り替える最も簡単な方法は何ですか?ユーザーがHTML5を有効にしているかどうかに基づいて、特定のものを表示したい...たとえば、ジオロケーション、ネイティブ日付ピッカーなど。
ありがとう
この回答は、JavaScriptを使用してユーザーがHTML5を有効にしているかどうかを確認する方法を知っていることを前提としています。これがアイデアです。javascriptがJSFサーバー管理対象Beanと通信する1つの方法は、javascriptにclick
非表示のイベントを呼び出させることcommandButton
です。だからここにあなたがそれをする方法があります。このコマンドボタンは、ページに特定のコンポーネントを表示するためのフラグを設定するなど、バッキングBeanで関数を呼び出すことができます。ajaxリクエストの場合、属性を持つPrimeFacesp:commandButton
を使用update
して部分的な更新を行うことができます。
inputText
ますp:commandButton
commandButton
。inputText
サーバーにフラグを返すことができるようにあります。例えば:
<h:form style="display:none">
<h:inputText id="flag" value="#{myBean.flag}"/>
<p:commandButton id="button" actionListener="#{myBean.process}" update="..."/>
</h:form>
したがって、jQueryは次のようになります
if(user is HTML5 enabled){
jQuery("#flag").val("Flag that let you know user has HTML5 enable.")
jQuery("#button").click();
}else{
//Same thing as above but passing a flag that you know user dont have HTML5 enabled
}
あなたのマネージドBeanでは
@ManagedBean
@RequestScoped
public class MyBean{
private String flag;
private boolean display;
//setter and getter for `flag` and `display`
public void process(){
if(flag.equals("HTML5")){
display = true;
}else{
display = false;
}
}
}
コンポーネントの表示をHTMLdivコンテナーに入れて、そのコンテナーを非表示/表示できますか?
a4j:jsFunctionコンポーネントを使用できます。Beanにレンダリングフラグを設定してreRender