在h:ajax调用后自定义响应

时间:2012-03-23 00:57:39

标签: java jsf jsf-2 primefaces

我有类似的东西:

<h:commandButton>
     <h:ajax event="click" listener="#{controller.onLog}" onchange="onLogProcess" />
     ....
</h:commandButton>

我向服务器发送帖子,在监听器功能中做一些事情。然后我想向客户端返回一个字符串/消息(响应)并在“onLogProcess”中用javascript捕获它以向用户显示自定义字符串。

我正在研究它,但我还没有找到任何东西......

有什么办法可以用JSF做到这一点吗?

我正在使用JSF 2.1 / Mojarra 2.1.2

提前致谢!

1 个答案:

答案 0 :(得分:1)

<f:ajax>(不是<h:ajax>!)有条件地呈现<h:outputScript>

<h:commandButton action="#{controller.onLog}">
    <f:ajax render="script" />
</h:commandButton>
<h:panelGroup id="script">
    <h:outputScript rendered="#{not empty controller.log}">
        onLogProcess('#{controller.log}');
    </h:outputScript>
</h:panelGroup>

其中#{controller.log}是您要传递给JS函数的字符串。确保它不包含JS特殊字符,如',换行符等。如果需要,请使用Apache Commons Lang StringEscapeUtils#escapeJavaScript()