gpt4 book ai didi

jakarta-ee - javax.faces.FacesException : java. lang.ClassCastException : java. lang.String 无法转换为 javax.faces.component.UIComponent

转载 作者:行者123 更新时间:2023-12-03 18:23:44 25 4
gpt4 key购买 nike

我的 Java EE Web 应用程序是 Glassfish 2.1 工作正常。 现在我想迁移到 Glassfish 3.1.1

我已按照提供的修改 here

我对richfaces的依赖如下:-

   <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>

我的 jsf 依赖项是
        <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>

在 web.xml 中添加上下文参数如下:-
<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>

用 2.5 版修改了我的应用程序描述符,例如:
<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">

我的 在 faces-config 中如下:-
 <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>

应用程序部署成功,但之后我在浏览器中启动应用程序时收到类转换异常错误:

服务器日志如下:
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)

它在 glassfish 2 中运行良好,所以我认为属性与支持 bean 的绑定(bind)没有问题。

我该如何解决这个问题?

最佳答案

java.lang.ClassCastException: java.lang.String cannot be cast to javax.faces.component.UIComponent at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations



当您有 String 时,将发生此特殊异常。值(value)属性如
private String value;

并使用 binding 将其绑定(bind)到组件属性:
<h:inputText binding="#{bean.value}" />

这是不正确的。该值应使用 value 绑定(bind)。属性:
<h:inputText value="#{bean.value}" />
binding仅用于将整个组件(它是 UIComponent 的实例)绑定(bind)到支持 bean,例如以编程方式修改它。

验证您的 login.xhtml代码。如有必要,只要您仍然可以重现问题,就可以尽可能多地删除代码,以便最终得到尽可能小的代码片段,该代码片段准确地重现了这个问题,这应该让您更容易找到罪魁祸首。

也可以看看:
  • How does the 'binding' attribute work in JSF? When and how should it be used?
  • 关于jakarta-ee - javax.faces.FacesException : java. lang.ClassCastException : java. lang.String 无法转换为 javax.faces.component.UIComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851067/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com