У меня есть этот код в файле .xhtml
:Expression Language (EL) не работает в Embedded Glassfish 4.0
<h:inputText id="userName" value="#{userEntity.userName}"
title="${bundle['signup.createuser.username']}"
maxlength="#{jsfConst.userNameMaxFieldSize}">
</h:inputText>
Но maxlength
свойство не устанавливается при развертывании war
файла в Embedded Glassfish 4.0. Я устанавливаю тот же самый файл war
на установку Glassfish 4.0, и он отлично работает.
Я используя эту Glassfish зависимость в моей 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>
И это jsfConst.java
файл:
@ManagedBean
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class JsfConst {
public int getEmailFieldSize() {
return Const.emailFieldSize;
}
public int getUserNameMaxFieldSize() {
return Const.userNameMaxFieldSize;
}
}
Мой вопрос, что мне не хватает с Embedded Glassfish, что делает его не в состоянии для включения EL?
UPDATE:
Это web.xml
файл:
<?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>
Этот класс имеет странное сочетание аннотаций. Во-первых, вы намеревались ли это быть управляемым компонентом EJB или управляемым компонентом JSF? (обратите внимание: оба не могут, хотя ваша текущая установка аннотации подразумевает это желание) – BalusC
Привет @BalusC, управляемый bean-компонент JSF, почему? Я вижу, поэтому оба не должны использоваться вместе, я должен удалить '@ Singleton'. Во всяком случае, я пробовал все комбинации аннотаций, и никто из них не работает в Embedded Glassfish 4. Но это похоже на недостающую зависимость или что-то вызывает это, когда-то я думал, что это может быть «Mojarra-2.2.0», который он использует , –
Вы должны использовать '@ManagedBean @ ApplicationScoped' как из пакета' javax.faces.bean'. В качестве альтернативы, если у вас есть '/ WEB-INF/beans.xml' (и, следовательно, ваш webapp включен CDI),' @Named @ ApplicationScoped' из пакетов 'javax.injext' и' javax.enterprise.context' , Никаких других аннотаций. – BalusC