2009-05-12 17 views
0

パラメータを取らずにJSFで文字列を返すBeanのメソッドを簡単に呼び出す方法を探しています。私が本当に必要としないのは、このメソッドがアクション結果を返し、JSFライフサイクル全体を使用して私を別のビューにすることです。私はJavaScriptからそれを行う必要があります。そのため、アプリケーションのクライアント側の部分をまとめて、RichFacesのA4J部分を使ってこれまでのところ何ももたらしていません。JavaScriptからJSFのサーバー側コードを呼び出す

ので、ここでのシナリオは、ステップバイステップ形式で再びです:JSの問題から

  1. GETサーバプロセス上でいくつかのアドレス
  2. でGETおよびJSONまたはHTMLを返します(基本的に文字列)
  3. リクエストがクライアントに送り返されると、JSでさらに処理できるようになります。

ありがとう!

答えて

2

使用a4j:jsFunctionとデータ属性。

<button onclick="callBackend();">Go</button> 

<a4j:jsFunction name="callBackend" action="#{myBean.someMethod}" data="#{myBean.someString}" oncomplete="handleResponse(data);"/> 

<script> 
function handleResponse(response) { 
    alert(response); 
} 
</script> 
+0

大体そうですが、結果はmyBean.getSomeString()ではなくsomeMethodによって返されることをお勧めします。 –

+0

私はそれを試していないが、あなたはアクションをドロップし、データにsomeMethod()を入れることができますか? – Damo

+0

私はそれをしました。データメソッドをgetter(String getSomeMethod())のように定義する必要があることだけです。それ以外は動作します。ありがとう! –

0

ダモ:

だから大体、あなたのような何かをしたい、それが唯一の方法callBackendが実行される最初の時間のために働くかもしれない理由を説明することができますか?最初の呼び出しが成功し、次の呼び出しがブロックされたという奇妙な動作が発生しています。サーバー側のコードが実行されているのが見えますが、奇妙な結果がブラウザーに返されています(_viewstateやそのようなもの)。

+0

わかりません。スクリプトがある地域を再レンダリングする前に、この種の動作を経験しました。ボタンやjsFunctionを再描画しないようにしてください。 – Damo

関連する問題