2012-01-14 18 views
1

ページがあります。ページ全体が読み込まれた後に読み込むセクションが1つあります。このために、私は、ページ上で、次のコードを使用しています:JSF 2.0ドキュメントの読み込み時のページ上の部分レンダリング

<script type="text/javascript"> 
    alert("In the JS"); 
    $(document).ready(
     function() { 
      $.post(jspPath+'/myCommunity/ajax/hotTopicDiscussion.faces', 
       function(data) { 
        jsf.ajax.request(this, 'post', {render: 'discussionTopic'}); 
       } 
      ); 
     } 
    ); 
</script> 

<h:panelGroup id="discussionTopic" reRendered="#{discussionBean.doRender}"> 

このdoRenderは、私はAJAX呼び出しが行われ、一度設定Beanプロパティです。しかし、これはデータをロードしていません。私は、ajaxメソッドが呼び出されているのを見ることができます。

+0

実際のjsf ajaxリクエストを行う前に、なぜ 'jspPath + '/ myCommunity/ajax/hotTopicDiscussion.faces''に投稿リクエストを送信するのですか? –

+1

'h:panelGroup'に' rerendered'属性とは何ですか?それは実際に存在しますか? –

答えて

1

jsf.ajax.requestのお電話が間違っているようです。 requestJsDoc reference引数によれば以下の通りである:

源: このAjaxリクエスト、又はトリガー要素として使用する要素のID文字列を発生させたDOM要素。

イベント: このAjaxリクエストをトリガーしたDOMイベント。イベント引数はオプションです。

オプション: クライアントまたはサーバー側の要求処理を制御するための要求パラメーターとして送信できる使用可能なオプションのセット。

最初の要素はフォーム内の何らかの要素でなければならず、フォーム自体でもかまいません。フォームのIDまたはフォーム要素自体をこの関数に渡すことができます。

1

本当にはフォームをajaxicallyに提出する必要がありますか?それはjsf.ajax.request()が対象です。 <div>の中にいくつかの静的コンテンツをロードするだけのようです。 jQuery.load()

<script> 
    $(document).ready(function() { 
     $.get("#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces", function(data) { 
      $("#discussionTopic").html(data); 
     }); 
    }); 
</script> 
<h:panelGroup id="discussionTopic" layout="block" /> 

あるいは、単純に、次のようにするだけの操作を行います。

<script> 
    $(document).ready(function() { 
     $("#discussionTopic").load("#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces"); 
    }); 
</script> 
<h:panelGroup id="discussionTopic" layout="block" /> 

両方のケースでは、私はhotTopicDiscussion.xhtmlは、ルート要素として<ui:composition>を持っていることを前提とし、それだけで、必要なHTMLが含まれていること(したがって、 <html>などではありません)。

あなたが本当に本当にのフォームをajaxicallyに提出する必要がある場合、JSがプログラムでボタンを「クリック」するようにするのが最も簡単です。それは適切かつ必要な電話番号までjsf.ajax.request()コールまですべて委任します。とにかくページ上の物理的なフォーム/ボタンコンポーネントがないと、コールは役に立たない。必要に応じて、CSSでフォームを非表示にすることができます。

<script> 
    $(document).ready(function() { 
     $("[id='form:button']")[0].onclick(); 
    }); 
</script> 
<h:form id="form" style="display:none;"> 
    <h:commandButton id="button" action="#{bean.submit}"> 
     <f:ajax render=":discussionTopic" /> 
    </h:commandButton> 
</h:form> 
<h:panelGroup id="discussionTopic" layout="block" /> 
+0

こんにちは、hotTopicDiscussion.xhtmlには – smitas

+0

しかありません。hotTopicDiscussion.xhtmlには、次のようなajaxコールがあります。 \t 。これはページロードのいくつかのページによって呼び出されており、レンダリング部分はこのページのみにあります – smitas

関連する問題