1

我有一个支持 bean,其中包含一些共享相同名称但具有不同签名的方法,例如:

public void voteUp( Member member, ObjectA object ) { ... }
public void voteUp( Member member, ObjectB object ) { ... }

在示例中,ObjectAObjectB类型不共享任何共同点。

在我的 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.E​​valuationException 无法将 com.test.ObjectA 类型的 com.test.ObjectA@116c1800 转换为 com.test.ObjectB 类

既然我给了我的 EL 一个 type 的对象ObjectA,为什么它仍然调用带有ObjectB签名的方法呢?我是不是在这里忘记了一些关于 Java 基础的东西,还是我的 EL 解释器搞砸了?

我使用 GlassFish 3.1.2。

[编辑]只是为了明确我的代码中的其他一切都正常,当我重命名此示例中的两种方法之一时,一切正常。

4

0 回答 0