方法必须有签名"String method()... [etc] ..."但是有签名"void method()"

hug*_*gri 64 eclipse validation jsf el eclipse-wtp

我有一个数据表,每行有一个按钮:

<ice:dataTable ... var="item">
  <ice:column>
    <h:commandButton value="Download" action="#{mybean.downloadItem(item)}" />
  </ice:column>
</ice:dataTable>
Run Code Online (Sandbox Code Playgroud)

在支持bean中有这种方法:

public void downloadItem(Item item) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

一切正常(单击该方法时执行),但Eclipse验证失败并显示以下奇怪消息:

方法必须具有签名"String method(),String method(),String方法(String),String方法(String,String),String方法(String,String,String),String方法(String,String,String,String) ,String方法(String,String,String,String,String),String方法(String,String,String,String,String,String),String方法(String,String,String,String,String,String,String),String method(String,String,String,String,String,String,String,String),String方法(String,String,String,String,String,String,String,String,String),String方法(String,String,String, String,String,String,String,String,String,String),String方法(String,String,String,String,String,String,String,String,String,String,String),String方法(String,String,String, String,String,String,String,String,String,String,String,String),String method(String,String,String,String,String,String,String,String,String,String,String,String,String),String方法 tring,String,String,String,String,String,String,String,String,String,String,String,String,String),String method(String,String,String,String,String,String,String,String,String, String,String,String,String,String,String),String方法(String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String),String method(String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String),String method(String,String,String,String,String, String,String,String,String,String,String,String,String,String,String,String,String,String),String method(String,String,String,String,String,String,String,String,String,String, String,String,String,String,String,String,String,String,String)"但是有签名"void method()"

我能做什么?

如果这是相关的,我在Tomcat 7上使用Eclipse Indigo SR1.

Bal*_*usC 131

忽略它.Eclipse是一个混蛋.您可以通过设置调它窗口>首选项>网络>的JavaServer Faces工具>验证>类型分配问题>方法表达签名不兼容时,以警告忽略(默认为错误).

在此输入图像描述

所有礼貌都借鉴了这个博客的形象.

原因是,Eclipse期望该action属性始终返回String,而不是void.虽然在JSF action属性中确实未指定,但EL方法表达式本身实际上也支持void方法.过度热心的消息反过来表明负责此验证的基础逻辑无法确定单个方法参数,因此它尝试将原始方法签名与允许签名集合进行比较,如果没有匹配则最终会显示在消息中.找到.基于该消息,当该方法具有20个或更多参数时,此问题也可能消失;)

这个问题在Eclipse Luna SR1中得到修复,在报告问题近6年后.严重性已从错误降至警告.您可能仍希望将其降低到忽略.

也可以看看:

  • 非常感谢,这个错误非常令人沮丧......我也看到你是那个写下我正在关注的那些精彩教程的人,所以也谢谢你. (7认同)