質問

I have this code in a .xhtml file:

<h:inputText id="userName" value="#{userEntity.userName}"
             title="${bundle['signup.createuser.username']}"
             maxlength="#{jsfConst.userNameMaxFieldSize}">
</h:inputText>

But the maxlength property is never set when deploying the war file in Embedded Glassfish 4.0. I deploy the very same war file to Glassfish 4.0 installation and it works fine.

I a using this Glassfish dependency in my POM:

<dependency>
    <groupId>org.glassfish.main.extras</groupId>
    <artifactId>glassfish-embedded-all</artifactId>
    <version>4.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.jboss.arquillian.container</groupId>
    <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
    <version>1.0.0.CR3</version>
    <scope>test</scope>
</dependency>

And this is the jsfConst.java file:

@ManagedBean
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class JsfConst {
    public int getEmailFieldSize() {
        return Const.emailFieldSize;
    }

    public int getUserNameMaxFieldSize() {
        return Const.userNameMaxFieldSize;
    }
}

My question is, what am I missing with Embedded Glassfish that makes it fail to enable the EL?

UPDATE:

This is the web.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    <error-page>
        <exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
        <location>/pagenotfound.jsp</location>
    </error-page>
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/sessionexpired.jsp</location>
    </error-page>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
</web-app>
役に立ちましたか?

解決

In Arquillian, you need to declare all classes that comprise the WAR file to deploy and test. Just register JsfConst in the WAR using ShrinkWrap.create(WebArchive.class, "createUser.war").addClass(JsfConst.class)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top