在JSF中从JavaScript调用服务器端代码
我正在寻找一种简单的方法来调用bean的方法,该方法不带任何参数,并在JSF中返回字符串。我真正不需要的是,该方法返回一个操作结果,然后使用整个JSF生命周期将我转到另一个视图。我需要通过JavaScript来实现这一点,这样我就可以组合应用程序的一些客户端部分,而查看RichFaces的A4J部分到目前为止还没有给我带来什么 下面是一个循序渐进的场景:在JSF中从JavaScript调用服务器端代码,javascript,ajax,jsf,Javascript,Ajax,Jsf,我正在寻找一种简单的方法来调用bean的方法,该方法不带任何参数,并在JSF中返回字符串。我真正不需要的是,该方法返回一个操作结果,然后使用整个JSF生命周期将我转到另一个视图。我需要通过JavaScript来实现这一点,这样我就可以组合应用程序的一些客户端部分,而查看RichFaces的A4J部分到目前为止还没有给我带来什么 下面是一个循序渐进的场景: 从JS问题中获取某个地址 在获取并返回JSON或HTML(基本上是字符串)的服务器进程上 一旦请求被发送回客户端,我希望能够使用JS进一步处理
<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>
Go
功能句柄响应(响应){
警报(响应);
}
达莫:你能解释一下为什么它可能只在第一次执行callBackend方法时才起作用吗?我遇到了一个奇怪的行为,第一个呼叫成功,而下一个呼叫被阻止。我看到服务器端代码正在执行,但一些奇怪的结果正在被发送回浏览器(类似于_viewstate之类的东西)。大致上是的,但我希望结果由someMethod返回,而不是由myBean.getSomeString()返回。我没有尝试过,但您可以放弃该操作并将someMethod()放入在数据里?是我做的。只是数据方法必须像getter(String getSomeMethod())一样定义。除此之外,它还能工作。谢谢不确定。我以前在重新命名脚本所在的区域时也经历过这种行为。因此,请确保您没有重新启动按钮或JSF函数。