JSF 2.3.14:(重新)渲染带有常量的 JavaScript 代码块后出现语法错误

JSF 2.3.14: Syntax error after (re-) rendering a JavaScript code block with constants

当我推送 h:commandButton 时,以下代码片段会生成 javascript 语法错误:

<h:outputScript>
  'use strict';
  const label = '*';
</h:outputScript>
<h:form>
  <h:commandButton>
    <f:ajax render="@all" />
  </h:commandButton>
</h:form>

SyntaxError: redeclaration of const label

问题是const label = '*'。这种情况怎么处理?

Mojarra 2.3.14

您可以根据 facesContext.postback 使 h:outputScript 成为条件。如果您使用 rendered="#{not facesContext.postback}" 它只会在初始请求中呈现,而不是 Ajax 请求:

<h:outputScript rendered="#{not facesContext.postback}">
  'use strict';
  const label = '*';
</h:outputScript>
<h:form>
  <h:commandButton>
    <f:ajax render="@all" />
  </h:commandButton>
</h:form>

另请参阅:

  • How to know if I am in a postback?