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からインスタンス化することはできません。属性によって指定された参照型にすることはできますが、属性にすることはできません。Beanは仕様に従って定義されていると思います。com.manavmisra.nonprofit.NonpRegBeanNonpRegBeantypeclass

class属性は、Bean インスタンスの実際のクラスを指定します。属性typeは、インスタンスが処理される Java タイプを指定します。これは、Bean のクラスのスーパークラスまたはそれによって実装されるインターフェースである可能性があります。指定された次に、指定されたスコープの iduseBeanを作成しようとします。インスタンス化するクラスがわかっている場合にのみ、これを行うことができます。一致する属性がすでに存在する場合は、それuseBeanを使用しようとします。typeそれが提供されている場合は で指定された型にキャストされ、それ以外の場合は で指定された型にキャストされclassます。

指定された属性nonpRegBeanがリクエスト スコープに存在するかどうかを確認します。

于 2013-06-26T05:41:13.613 に答える