今天我得到了例外情况“mojarra未定义”。
这两个解决方案都不是我的问题。
经过一些调试后,我通过改变web.xml中的javax.faces.PROJECT_STAGE参数修复了这个问题:
<param-value>Production</param-value>
为:
<param-value>Development</param-value>
它解决了这个问题,但在将我的项目投入生产时该怎么办?我应该把这个问题留在开发上吗?
答案 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&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">
我希望这个解决方案适合你。