1

javascriptフラグに基づいてJSFコンポーネントのレンダリングを切り替える最も簡単な方法は何ですか?ユーザーがHTML5を有効にしているかどうかに基づいて、特定のものを表示したい...たとえば、ジオロケーション、ネイティブ日付ピッカーなど。

ありがとう

4

3 に答える 3

1

この回答は、JavaScriptを使用してユーザーがHTML5を有効にしているかどうかを確認する方法を知っていることを前提としています。これがアイデアです。javascriptがJSFサーバー管理対象Beanと通信する1つの方法は、javascriptにclick非表示のイベントを呼び出させることcommandButtonです。だからここにあなたがそれをする方法があります。このコマンドボタンは、ページに特定のコンポーネントを表示するためのフラグを設定するなど、バッキングBeanで関数を呼び出すことができます。ajaxリクエストの場合、属性を持つPrimeFacesp:commandButtonを使用updateして部分的な更新を行うことができます。

  1. とを使用してページにフォームを非表示にしinputTextますp:commandButton
  2. ユーザーがJavaScriptを使用してHTML5を有効にしているかどうかを確認してから、でクリックイベントを呼び出しますcommandButtoninputTextサーバーにフラグを返すことができるようにあります。

例えば:

<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;
        }
    }
}    
于 2011-07-13T17:39:00.477 に答える
0

コンポーネントの表示をHTMLdivコンテナーに入れて、そのコンテナーを非表示/表示できますか?

于 2011-07-13T15:47:06.160 に答える
0

a4j:jsFunctionコンポーネントを使用できます。Beanにレンダリングフラグを設定してreRender

于 2011-07-13T16:39:33.830 に答える