javascript - jsf通过一个 p:remoteCommand 函数调用一个,通过"oncomplete"处理程序将消息传递给它的他函数

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

这个问题纯粹基于 以前问问题( 。 ) 但是问题完全 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变量不是一个选项。

时间:原作者:0个回答

121 5

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查询字符串。正规表达式 从它提取参数。注意 正规表达式 假定参数从不在查询字符串的开头,因为它总是以特定的参数开始,所以可以保持简单的。

原作者:
...