我有类似的东西:
<h:commandButton>
<h:ajax event="click" listener="#{controller.onLog}" onchange="onLogProcess" />
....
</h:commandButton>
我向服务器发送帖子,在监听器功能中做一些事情。然后我想向客户端返回一个字符串/消息(响应)并在“onLogProcess”中用javascript捕获它以向用户显示自定义字符串。
我正在研究它,但我还没有找到任何东西......
有什么办法可以用JSF做到这一点吗?
我正在使用JSF 2.1 / Mojarra 2.1.2
提前致谢!
答案 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()
。