同じ名前を共有するが署名が異なるいくつかのメソッドを含むバッキング Bean があります。
public void voteUp( Member member, ObjectA object ) { ... }
public void voteUp( Member member, ObjectB object ) { ... }
この例では、型ObjectA
とObjectB
型に共通点はありません。
私の Facelet では、次のようにアクションを呼び出します。
<h:form>
<h:commandButton action="#{backingBean.voteUp(membre, objectA)}" ... />
</h:form>
...
<h:form>
<h:commandButton action="#{backingBean.voteUp(membre, objectB)}" ... />
</h:form>
しかし、時々 (ランダムではなく、おそらくバッキング Bean で最初に定義された署名に応じて)、これらの EL のいずれかによって呼び出されたメソッドが間違っているようであり、それらの例外のいずれかが発生します。
serverError: class javax.faces.el.EvaluationException クラス com.test.ObjectA 型の com.test.ObjectA@116c1800 をクラス com.test.ObjectB に変換できません
私は自分の EL に type のオブジェクトを与えているのに、どうしてシグネチャをObjectA
使ってメソッドを呼び出すのでしょうか? ObjectB
ここでJavaの基本について何か忘れているのでしょうか、それともELインタープリターが台無しになっているのでしょうか?
GlassFish 3.1.2 を使用しています。
[編集] コードで他のすべてが問題ないことを明確にするために、この例の 2 つのメソッドのいずれかの名前を変更すると、すべてが正常に機能します。