Omnifaces CDN 资源处理程序中的 EL 表达式未在 Wildfly 9 中解析
EL expressions in Omnifaces CDN resource handler not resolved in Wildfly 9
我正在玩新的 Wildfly 9.0.0.Final。部署我的 JSF2.2 Web 应用程序后,Omnifaces2.1 CDNResourceHandler 停止解析 EL 表达式。
我在web.xml中的定义:
<context-param>
<param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
<param-value>
styles:*=#{CDNResourcesBean.styles}/*
</param-value>
</context-param>
在 .xhtml 中,style.css 文件存在于项目结构的资源中
<h:outputStylesheet library="styles" name="style.css"/>
生成HTML:
<link type="text/css" rel="stylesheet" href="/style.css" />
我的 CDNResourceBean
@Named
@RequestScoped
public class CDNResourcesBean {
public String getStyles() {
return "https://abcdef.cloudfront.net/";
}
据我所知,调用了 CDNResourceHandler,它替换了链接,但由于未知原因,El 表达式 #{CDNResourcesBean.styles} 被忽略了。
我应该如何让它工作?是CDI配置问题,Bean初始化顺序问题,CDNResourceHandler与新WF不兼容的问题吗?
技术:
应用服务器:Wildfly 9.0.0.Final
全脸:2.1
这是 WildFly 9 的 Weld 实现中错误修复的结果。根据问题 CDI-525, WELD-1941 and WFLY-4877, the CDI spec appears to be not consistent with JavaBeans specification 关于默认托管 bean 名称,以防不合格的类名以两个以上的大写字母开头。 CDI 规范只是在规范中声明如下,而 Weld 最初是遵循 JavaBeans 规范:
The default name for a managed bean is the unqualified class name of the bean class, after converting the first character to lower case.
Weld 被放回去以按字面意思理解。 CDNResourcesBean
现在注册为 #{cDNResourcesBean}
而不是 #{CDNResourcesBean}
。
目前,如果您打算遵循 JavaBeans 规范,那么最好的办法是显式指定托管 bean 名称。
@Named("CDNResourcesBean")
@RequestScoped
public class CDNResourcesBean {}
此问题与 OmniFaces 无关。
与具体问题无关,去掉 URL.
中的双斜杠
我正在玩新的 Wildfly 9.0.0.Final。部署我的 JSF2.2 Web 应用程序后,Omnifaces2.1 CDNResourceHandler 停止解析 EL 表达式。
我在web.xml中的定义:
<context-param>
<param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
<param-value>
styles:*=#{CDNResourcesBean.styles}/*
</param-value>
</context-param>
在 .xhtml 中,style.css 文件存在于项目结构的资源中
<h:outputStylesheet library="styles" name="style.css"/>
生成HTML:
<link type="text/css" rel="stylesheet" href="/style.css" />
我的 CDNResourceBean
@Named
@RequestScoped
public class CDNResourcesBean {
public String getStyles() {
return "https://abcdef.cloudfront.net/";
}
据我所知,调用了 CDNResourceHandler,它替换了链接,但由于未知原因,El 表达式 #{CDNResourcesBean.styles} 被忽略了。
我应该如何让它工作?是CDI配置问题,Bean初始化顺序问题,CDNResourceHandler与新WF不兼容的问题吗?
技术: 应用服务器:Wildfly 9.0.0.Final 全脸:2.1
这是 WildFly 9 的 Weld 实现中错误修复的结果。根据问题 CDI-525, WELD-1941 and WFLY-4877, the CDI spec appears to be not consistent with JavaBeans specification 关于默认托管 bean 名称,以防不合格的类名以两个以上的大写字母开头。 CDI 规范只是在规范中声明如下,而 Weld 最初是遵循 JavaBeans 规范:
The default name for a managed bean is the unqualified class name of the bean class, after converting the first character to lower case.
Weld 被放回去以按字面意思理解。 CDNResourcesBean
现在注册为 #{cDNResourcesBean}
而不是 #{CDNResourcesBean}
。
目前,如果您打算遵循 JavaBeans 规范,那么最好的办法是显式指定托管 bean 名称。
@Named("CDNResourcesBean")
@RequestScoped
public class CDNResourcesBean {}
此问题与 OmniFaces 无关。
与具体问题无关,去掉 URL.
中的双斜杠