PWC6228:模板文本正文中不允许#{...}

时间:2011-11-21 14:44:41

标签: templates jsf jsf-2 el

我有一个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}');"/> 

它工作正常。我不明白为什么上面的代码不起作用。是否有可能做到这一点?如果是,上面的代码有什么问题?提前谢谢。

1 个答案:

答案 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无关 。您从网络服务器收到错误,而不是来自网络浏览器。