从JavaScript调用JSF中的服务器端代码

时间:2009-05-12 08:45:37

标签: javascript ajax jsf

我正在寻找一种简单的方法来调用bean的方法,该方法不带参数并在JSF中返回一个字符串。我真的不需要的是该方法返回一个动作结果,然后使用整个JSF生命周期来获取另一个视图。我需要从JavaScript中做到这一点,以便我可以将应用程序的一些客户端部分组合在一起并且浏览RichFaces的A4J部分到目前为止没有给我带来任何帮助。

所以这里的情景又是一步一步的形式:

    来自JS的
  1. 在某个地址发出GET
  2. 在服务器进程上GET并返回JSON或HTML(基本上是一个字符串)
  3. 一旦请求被发送回客户端,我希望能够使用JS进一步处理它。
  4. 谢谢!

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

达摩:你能解释为什么它只能在第一次执行方法callBackend时起作用吗?我遇到了一个奇怪的行为,第一个呼叫成功,下一个呼叫被阻止。我看到服务器端代码正在执行但是一些奇怪的结果被发送回浏览器(类似_viewstate和那些东西)。