是否可以创建a4j:jsFunction
将在我的托管 bean 中调用方法并从那里执行转发到另一个 jsf 页面的方法?
提前致谢。
不,这是不可能的,因为<a4j:jsFunction>
它将在 HTML 中创建一个可用的 javascript 方法,该方法通过 Ajax 与服务器通信。相反,你可以做一些像这样丑陋的事情:
<h:form id="myForm">
<a4j:jsFunction name="myJSFunction" action="#{myBean.jsLogic}"
oncomplete="document.getElementById('myForm:btnForward').click();" />
<a4j:commandButton id="btnForward" style="display: none;"
action="#{myBean.doForward}" />
</h:form>
在这种情况下,在您的 js 函数结束时,您将调用可以进行导航的<a4j:commandButton>
(也<a4j:commandLink>
或任何其他h
组件)的方法。
好吧,它不是真正的转发,但您可以进行重定向:
只要确保您对应navigation-case
的 infaces-config
文件具有相应的标签:
<redirect />
然后在ajax调用之后浏览器将被重定向到指定的页面。
这对于 Luiggi 的响应有缺点,即进行两次服务器调用,一次是 ajax,然后是重定向。
作为优势,它使代码更清晰。