当javax.faces.PROJECT_STAGE为Production时,未定义mojarra

时间:2013-06-10 23:16:59

标签: jsf

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

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

这两个解决方案都不是我的问题。

经过一些调试后,我通过改变web.xml中的javax.faces.PROJECT_STAGE参数修复了这个问题:

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

为:

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

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

3 个答案:

答案 0 :(得分: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;},even虽然我的组件仍然调用mojarra.ab(...)。我会仔细检查我的服务器配置

你显然已经尝试过Mojarra和MyFaces,并且MyFaces版本的jsf.js悬挂在网络管道中的某个地方。至少清除浏览器和代理的缓存(如果有的话)。

它在开发阶段工作是因为jsf.js的URL包含Mojarra特有的附加查询字符串(它将返回非缩小版本以简化调试)。

答案 1 :(得分:0)

这些天我遇到了同样的麻烦,我发现,这是由我的extendend omnifaces resourcehandler引起的。

spring.autoconfigure.exclude

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>

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

答案 2 :(得分:-2)

我有完全相同的问题,这是JSF和PrimeFace之间的冲突。 (如果你使用的是primeface)

我之前使用过 <h:commandLink actionListener="#controller.upadte"> 而解决方案是使用 <p:commandLink actionListener="#controller.upadte">

我希望这个解决方案适合你。