我有一个JS脚本,当成功触发提交按钮操作时调用该脚本:
<h:panelGroup rendered="#{user$webreports$webfilteroverview.submitted}">
<f:verbatim>
<script type="text/javascript">alert('Done!');</script>
</f:verbatim>
</h:panelGroup>
以上代码完美无缺。我想要做的是从资源包中获取警报框文本:
<script type="text/javascript">alert('#{msg.report_alert_text}');</script>
但我收到错误:
PWC6228:模板文本正文中不允许#{...}。
我这样做了:
<h:commandbutton onClick="alert('#{msg.report_alert_text}');"/>
它工作正常。我不明白为什么上面的代码不起作用。是否有可能做到这一点?如果是,上面的代码有什么问题?提前谢谢。
答案 0 :(得分:2)
PWC6228:模板文本正文中不允许#{...}。
您显然正在使用旧版JSP(X)而不是其后续Facelets。 JSP(X)不支持模板文本中的延迟EL #{}
。它仅支持模板文本中的标准EL ${}
(模板文本表示外部标记/ JSF组件):
<script type="text/javascript">alert('${msg.report_alert_text}');</script>
如果这不起作用,因为${msg}
尚未准备好(如果#{}
在视图的那一点尚不存在则会自动创建它),那么你需要{{1而是:
<h:outputText>
您只需要删除<script type="text/javascript">alert('<h:outputText value="#{msg.report_alert_text}" />');</script>
标记,以便在那里运行JSF组件。 <f:verbatim>
是JSF 1.0 / 1.1的遗留物,自JSF 1.2以来就不再需要了,自JSF 2.1以后就弃用了。
此问题与JavaScript无关 。您从网络服务器收到错误,而不是来自网络浏览器。