我知道您想显示一个由操作方法设置的字符串值?您只能在完成后显示它。您需要意识到 JSF 和 JS 并不像您对编码所期望的那样同步运行。JSF 基本上是一个 HTML 代码生成器。JS 仅适用于当前的 HTML DOM 树。您需要让 JSF 以这样的方式生成 HTML 代码,即一旦 HTML 响应到达网络浏览器,JS 代码就会被执行。
假设你有这个 JS:
function show(string) {
alert(string);
}
并假设你有这个 bean:
private String message;
public void show() {
message = "Hello!";
}
public String getMessage() {
return message;
}
如果您使用的是 JSF 1.x,请使用以下方法:
<h:commandButton value="show" action="#{bean.show}" />
<h:panelGroup rendered="#{not empty bean.message}">
<script>show('#{bean.message}');</script>
</h:panelGroup>
如果您使用的是支持 ajax 的 JSF 2.x,您也可以使用以下方法:
<h:commandButton value="show" action="#{bean.show}">
<f:ajax render="message" />
</h:commandButton>
<h:panelGroup id="message">
<h:panelGroup rendered="#{not empty bean.message}">
<script>show('#{bean.message}');</script>
</h:panelGroup>
</h:panelGroup>