PWC6228: # {...} не допускается в теле текста шаблона - PullRequest
1 голос
/ 21 ноября 2011

У меня есть 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 Ответ

2 голосов
/ 21 ноября 2011

PWC6228: # {...} не допускается в теле текста шаблона.

Вы, очевидно, используете устаревшую JSP (X) вместо ее преемников Facelets. Отложенный EL #{} в тексте шаблона не поддерживается JSP (X). Он поддерживает только стандарт EL ${} в тексте шаблона (текст шаблона означает внешние теги / компоненты JSF):

<script type="text/javascript">alert('${msg.report_alert_text}');</script>

Если это не сработает, потому что ${msg} не был подготовлен (#{} будет автоматически создавать его, если он еще не существует в этой точке зрения), тогда вам нужно <h:outputText>:

<script type="text/javascript">alert('<h:outputText value="#{msg.report_alert_text}" />');</script>

Вам нужно будет удалить только этот тег <f:verbatim>, чтобы компоненты JSF работали там. <f:verbatim> является остатком JSF 1.0 / 1.1 и больше не нужен, начиная с JSF 1.2, и устарел с JSF 2.1.

Эта проблема не имеет ничего общего с JavaScript. Вы получили ошибку от веб-сервера, а не от веб-браузера.

...