今天我得到了例外“mojarra 未定义”。
这些都不能解决我的问题。
经过一些调试后,我通过将 web.xml 中的 javax.faces.PROJECT_STAGE 参数更改为:
<param-value>Production</param-value>
至:
<param-value>Development</param-value>
它解决了这个问题,但是将我的项目投入生产时我应该怎么做?我应该将参数留在开发上吗?
我的组件在开发模式下调用 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 独有的查询字符串(它将返回一个非缩小版本以方便调试)。
这些天我遇到了同样的麻烦,我发现这是由我的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&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”。