javascript - jsf通過一個 p:remoteCommand 函數調用一個,通過"oncomplete"處理程序將消息傳遞給它的他函數

  显示原文与译文双语对照的内容

這個問題純粹基於 以前問問題( 。 ) 但是問題完全 messed Java 7 WebSockets API試圖顯示實際的實際方法/場景,但現在並不可能收到任何基於 <p:remoteCommand>的答案。

給定 below的JavaScript ( 這隻是一個測試場景) Fragment 。


<script type="text/javascript">


 function test() {


 var message ="myMessage";


 window["myFunction"]();


//This is literally interpreted as a JavaScript function"myFunction()".


//"myFunction()" in turn is associated with a <p:remoteCommand>.


 }



 $(document).ready(test);



 function notifyAll() {


 alert("notifyAll() invoked.");


 }


</script>



當載入頁面時,就會調用 test() 函數,這會導致以下 <p:remoteCommand> 觸發器觸發觸發另一個JavaScript函數( 即 notifyAll() ),該處理程序使用簡單的通知來通知該消息。


<h:form>


 <p:remoteCommand process="@this"


 name="myFunction"


 actionListener="#{bean.listener}"


 oncomplete="notifyAll()"


 ignoreAutoUpdate="true"/>


</h:form>



假設本地JavaScript變數 message inside的test() 函數被分配給一個通過 web a 通道非同步接收的JSON消息。

反過來,notifyAll() 函數必須向另一個 web sockets通道發送一個通知消息,這在這個問題中被完全忽略。

是否有可能通過 var message ="myMessage"test() 函數的本地到另一個函數 notifyAll() 通過給定的<p:remoteCommand>oncomplete 處理程序?

當消息 received message 換句話說,消息時,聲明作為全局JavaScript變數可能會使 web sockets的功能不堪重負,因為消息的處理仍然在進行。 因此,將 message 聲明為全局JavaScript變數不是一個選項。

时间: 原作者:

i 將它作為參數傳遞給 <p:remoteCommand> 函數並從它提取函數extract沒有更好的方法。


function test() {


 var message ="myMessage";


 myFunction([{name:"message", value: message}]);


}



function notifyAll(data) {


 var message = decodeURIComponent(data.match(/&message=([^&]*)/)[1]);


//...


}




<p:remoteCommand name="myFunction".. . oncomplete="notifyAll(this.data)"/>



data 參數已經在JS函數範圍中注入了 oncomplete,它表示了XHR查詢字元串。 正規表達式 從它提取參數。 注意 正規表達式 假定參數從不在查詢字元串的開頭,因為它總是以特定的參數開始,所以可以保持簡單的。

原作者:
...