我有一个包含几个共享相同名称但具有不同签名的方法的backing-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>
但似乎有时候(不是随机的,但可能取决于我的backing-bean中首先定义了哪个签名),其中一个EL调用的方法是错误的,我得到其中一个例外:< / p>
serverError:class javax.faces.el.EvaluationException无法转换 类com.test.ObjectA到类的com.test.ObjectA@116c1800 com.test.ObjectB
由于我给EL我的类型为ObjectA
的对象,为什么它还是用ObjectB
签名调用方法?我在这里忘记了Java基础知识,还是我的EL解释器搞砸了?
我使用GlassFish 3.1.2。
[编辑]只是为了清楚我的代码中其他一切都没问题,当我重命名这个例子中的两个方法之一时,一切正常。