【问题标题】:oamSubmit.js not included when f:ajax is present on a page页面上存在 f:ajax 时不包含 oamSubmit.js
【发布时间】:2017-04-06 15:17:24
【问题描述】:

我在使用 myfaces 时遇到了一个让我发疯的奇怪问题。我尝试了 2.2.10 和 2.2.12 版本。我也使用 primefaces 6.0,但这可能不相关。

每当我在页面上包含 f:ajax 标记时,commandLink 不再起作用,并且我在 JavaScript 控制台中收到错误:

ReferenceError: myfaces is not defined

深入挖掘发现,当页面上有f:ajax标签时,不再生成以下行:

<script type="text/javascript" src="/console/javax.faces.resource/oamSubmit.js.jsf?ln=org.apache.myfaces"></script>

当我手动添加此脚本行时,一切都会再次运行!我通过在标签之后添加以下 javascript 来做到这一点:

<script>
if (!window.myfaces) {
  document.write(unescape('%3Cscript type="text/javascript" src="/console/javax.faces.resource/oamSubmit.js.jsf?ln=org.apache.myfaces"%3E%3C/script%3E'));
}
</script>

虽然这个 hack 似乎一切正常,但不得不这样做让我感到不安。谁能解释一下这个问题的原因?

【问题讨论】:

    标签: javascript ajax jsf myfaces


    【解决方案1】:

    同样的问题。我偶然发现了mojarra is not defined when javax.faces.PROJECT_STAGE is ProductionsubmitForm() not defined for myfaces.JSF_JS_MODE 'minimal-modern' 发现问题仅存在于 javax.faces.PROJECT_STAGE=Production 中。

    添加

    <context-param>
        <param-name>org.apache.myfaces.JSF_JS_MODE</param-name>
        <param-value>minimal</param-value>
    </context-param>
    

    到 web.xml 为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多