2

今天我得到了例外“mojarra 未定义”。

我偶然发现了以下问题:thisthisthis

这些都不能解决我的问题。

经过一些调试后,我通过将 web.xml 中的 javax.faces.PROJECT_STAGE 参数更改为:

<param-value>Production</param-value>

至:

<param-value>Development</param-value>

它解决了这个问题,但是将我的项目投入生产时我应该怎么做?我应该将参数留在开发上吗?

4

2 回答 2

0

我的组件在开发模式下调用 mojarra.ab(this,event,'valueChange',0,'menu-form:pagina-select') jsf.js 是 mojarra,但在生产模式下它似乎是我的面孔,生产模式下 jsf.js 开头的小片段:if(!window.myfaces){var myfaces=new function(){};window.myfaces=myfaces;},即使我的组件仍然调用 mojarra .ab(...)。我会仔细检查我的服务器配置

您显然已经对 Mojarra 和 MyFaces 进行了试验,并且 MyFaces 版本jsf.js挂在网络管道某处的激进缓存中。至少清除浏览器的缓存,如果有的话,还要清除代理的缓存。

它在开发阶段工作是因为 URLjsf.js包含一个额外的 Mojarra 独有的查询字符串(它将返回一个非缩小版本以方便调试)。

于 2013-06-11T12:26:35.300 回答
0

这些天我遇到了同样的麻烦,我发现这是由我的extendend omnifaces资源处理程序引起的。

public class VersionableResourceHandler extends DefaultResourceHandler {
  //...
  @Override
  public Resource decorateResource(Resource resource) {
    if (resource == null) {
        return resource;
    }
    return new RemappedResource(resource, resource.getRequestPath() + "?v=1_2_1");
  }
}

<param-value>Development</param-value>

带有我附加的版本字符串的生成输出将是:

 <script type="text/javascript" src="/javax.faces.resource/jsf.js?ln=javax.faces&amp;stage=Development%3Fv=1_2_1"/>

<param-value>Production</param-value>

生成的输出如下所示:

<script type="text/javascript" src="/javax.faces.resource/jsf.js?ln=javax.faces%3Fv=1_2_1"/>

由于第二个“?”而无效,因此必须将“?v = 1_2_1”替换为“&v = 1_2_1”。

于 2017-01-29T08:52:50.317 回答