java-ee jsf-2 richfaces glassfish-3

java ee - javax.faces.FacesException: java.lang.ClassCastException: java.lang.String no se puede convertir a javax.faces.component.UIComponent



java-ee jsf-2 (1)

java.lang.ClassCastException: java.lang.String no se puede convertir a javax.faces.component.UIComponent en com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations

Esta excepción particular ocurrirá cuando tenga una propiedad de valor de String como

private String value;

y lo vinculan a un componente utilizando el atributo de binding :

<h:inputText binding="#{bean.value}" />

Esto es incorrecto. El valor debe estar vinculado usando el atributo de value :

<h:inputText value="#{bean.value}" />

La binding solo debe usarse para vincular el componente completo (que es una instancia de UIComponent ) al bean de respaldo, por ejemplo, para modificarlo programáticamente.

Verifica tu código de login.xhtml . Si es necesario, corte tanto como sea posible el código, siempre y cuando aún pueda reproducir el problema para que pueda terminar con el fragmento de código más pequeño posible que reproduce exactamente este problema que debería permitirle encontrar al culpable más fácilmente.

Ver también:

Mi aplicación web Java EE está funcionando bien con Glassfish 2.1. Ahora quiero migrar a Glassfish 3.1.1

He seguido las modificaciones proporcionadas aquí

mis dependencias para richfaces son las siguientes:

<dependency> <groupId>org.richfaces.framework</groupId> <artifactId>richfaces-api</artifactId> <version>3.3.3.Final</version> </dependency> <dependency> <groupId>org.richfaces.framework</groupId> <artifactId>richfaces-impl-jsf2</artifactId> <version>3.3.3.Final</version> </dependency> <dependency> <groupId>org.richfaces.ui</groupId> <artifactId>richfaces-ui</artifactId> <version>3.3.3.Final</version> </dependency>

mis dependencias jsf son

<dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.2</version> </dependency>

Se agregó el parámetro de contexto en web.xml de la siguiente manera:

<context-param> <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> <param-value>com.sun.facelets.FaceletViewHandler</param-value> </context-param> <context-param> <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name> <param-value>true</param-value> </context-param>

modifiqué mi descriptor de aplicación con la versión 2.5 como:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

mi en faces-config es el siguiente:

<application> <navigation-handler > org.navigation.CustomNavigationHandler </navigation-handler> <view-handler> org.ajax4jsf.application.AjaxViewHandler </view-handler> <!-- <view-handler> com.sun.facelets.FaceletViewHandler </view-handler>--> <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> <message-bundle>MyMessages</message-bundle> </application>

La aplicación se implementó correctamente, pero después de eso recibo un error de excepción de lanzamiento de clase en el momento de iniciar una aplicación en el navegador:

el registro del servidor es el siguiente:

INFO: myApp was successfully deployed in 21,635 milliseconds. SEVERE: Error Rendering View[/login.xhtml] javax.faces.FacesException: java.lang.ClassCastException: java.lang.String cannot be cast to javax.faces.component.UIComponent at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1923)

Está funcionando bien en glassfish 2, así que creo que no hay ningún problema con respecto al enlace de los atributos con el bean de respaldo.

¿¿Cómo puedo resolver esto??