0

这是场景:

在 JSP 文件中,我有:

其中,这个 bean 是一个子类 Bean,如下所示:

public class NonpUserBean extends NonpRegBean {

这种情况会导致任何在 RequestDispathcer.forward 尝试转到“错误”页面的问题。

然而,

<jsp:useBean id="nonpRegBean" class="com.manavmisra.nonprofit.NonpRegBean" 
   scope="request"/>

工作正常。

换句话说,当使用“子类”Bean 时,请求范围崩溃了。但是,如果我使用“超类”Bean,则请求范围在完全相同的情况下有效。

为什么?

4

1 回答 1

0

如果nonpRegBean实际是一个NonpUserBean对象,则不能从com.manavmisra.nonprofit.NonpRegBean类中实例化它。NonpRegBean可以是type属性指定的引用类型,但不能是class属性。我假设 bean 是按照规范定义的。

class属性指定bean实例的实际类。属性type指定处理实例的Java类型,可能是bean的类的超类或它实现的接口。如果还没有指定的属性指定范围内的 id 然后useBean尝试创建一个。只有知道要实例化哪个类,它才能做到这一点。如果已经有匹配的属性,则useBean尝试使用它;它将被转换为typeif that is provided 指定的类型,或者转换为 else 指定的类型class

nonpRegBean检查请求范围内是否存在任何名为的属性。

于 2013-06-26T05:41:13.613 回答