EL expressions in Omnifaces CDN resource handler not resolved in Wildfly 9

人走茶凉 提交于 2019-12-11 03:33:08

问题


I am playing around with new Wildfly 9.0.0.Final. After the deployment of my JSF2.2 web application, the Omnifaces2.1 CDNResourceHandler stopped resolving EL expression.

My definition in web.xml:

<context-param>
    <param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
    <param-value>
        styles:*=#{CDNResourcesBean.styles}/*
    </param-value>
</context-param>

In .xhtml, style.css file exists in resources of the project structure

<h:outputStylesheet library="styles" name="style.css"/>

Generated HTML:

<link type="text/css" rel="stylesheet" href="/style.css" />

My CDNResourceBean

@Named
@RequestScoped
public class CDNResourcesBean {
    public String getStyles() {
        return "https://abcdef.cloudfront.net/";
}

From what I see the CDNResourceHandler is called, it replaces links but from unknown reason the El expression #{CDNResourcesBean.styles} is ignored.

How should I make it working? Is that a question of CDI configuration, Bean initialization order, CDNResourceHandler not compatible with new WF?

Technology: Application server: Wildfly 9.0.0.Final Omnifaces: 2.1


回答1:


It's consequence of a bugfix in Weld implementation of WildFly 9. As per issues CDI-525, WELD-1941 and WFLY-4877, the CDI spec appears to be not consistent with JavaBeans specification as to default managed bean name in case the unqualified classname starts with more than two capitals. CDI spec merely stated as below in the spec, while Weld was initially following the JavaBeans specification:

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 was been put back to take it literally. The CDNResourcesBean is now registered as as #{cDNResourcesBean} instead of #{CDNResourcesBean}.

For now, if you intend to follow the JavaBeans specification, then your best bet is to explicitly specify the managed bean name.

@Named("CDNResourcesBean")
@RequestScoped
public class CDNResourcesBean {}

This problem is not related to OmniFaces.


Unrelated to the concrete problem, get rid of the double trailing slash in URL.



来源:https://stackoverflow.com/questions/31263272/el-expressions-in-omnifaces-cdn-resource-handler-not-resolved-in-wildfly-9

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!