2011-01-04 6 views
0

私はJSPで使用しようとしていますいくつかのJavaの豆持っている:私はELにアクセスしようとしているタイプのレビューのBeanがありへのアクセスJava Beanがプロパティは

class Review{ 
    int id; 
    String text; 
    User author; 
    // ... getters/setters here ... 
} 

class User{ 
    int id; 
    boolean isVisitor; 
    // ... getters/setters here ... 
} 

class VisitorUser extends User{ 
    String name; 
    // ... getters/setters here ... 
} 

を:

あなたが見ることができるように
${review.author.name} 

、レビューでauthorはタイプUserであると私はELにアクセスしようとしていますnameプロパティは、そのサブクラスVisitorUserに属します。作者がVisitorUserのインスタンスである場合、このアプローチは正しいですか?

このアプローチは、前にも働いたが、突然どこからともなく(あるいはおそらくプロジェクトのいくつかの他の分野でいくつかの変更の副作用として)、サーバーは、このエラーを与えることを始めている:

javax.servlet.jsp.el.ELException: Unable to find a value for "name" in object of class "mypackage.domain.User_$$_javassist_27" using operator "." 

このエラーを解決するためのヒント/アイデア/リンクは非常に高く評価されます。

答えて

3

正しいです。実行時にオブジェクトを検査します。しかし、オブジェクトのタイプはVisitorUserではなく、javassist-enhanced Userです。だから、あなたが正しいオブジェクトを持っていることを確認してください。

+0

Bozho。ちなみに、javassistが必要な私のプロジェクトでは、Hibernateを使用しています。 – craftsman

+0

@クラフトマン - そうだね。次に、あなたは 'VisitorUser'を持っているのでしょうか?それはちょうど 'User'かもしれません(おそらくあなたはあなたの休止状態の継承を正しくマッピングしていません) – Bozho

+0

マッピングは正しいです。同じレビューが別のJSPで正しく表示されているので、私はそれについて確信しています。問題を引き起こす特定のJSPには、アクティビティ(別の永続エンティティ)とレビューが表示されます。今ActivityはReviewとリンクされていない全く別のエンティティですが、データベースからアクティビティを取得すると、間違いなく上記のELエラーが表示されます。アクティビティを削除すると、再びレビューが正しく表示されるようになりました。 – craftsman

関連する問題