The method must have the signature "String method () ... [etc] ...", but it has the signature "void method ()"

I have data with a button in each row:

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

There is this method in the backup bean:

 public void downloadItem(Item item) { // ... } 

Everything works fine (when the method is clicked), but the Eclipse Confirmation completes with this strange message:

The method must have the signature "String method (), String method (), String method (String), String method (String, String), String method (String, String, String), String method (String, String, String, String) , String method (String, String, String, String, String), String method (String, String, String, String, String, String), String method (String, String, String, String, String, String, String, String), String method (String, String, String, String, String, String, String, String), String method (String, String, String, String, String, String, String, String, String), String Method (String, String, String, String, String, String, String, String, String, String), String method (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 method (String, String, String, String, String, Stri ng, 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 method (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 method (String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) ", but has n caption "void method ()"

What can I do?

If relevant, I am using Eclipse Indigo SR1 on Tomcat 7.

+58
eclipse validation el jsf eclipse-wtp
Nov 10 2018-11-11T00:
source share
1 answer

Ignore him. Eclipse is a jerk. You can customize it by setting Window> Preferences> Web> JavaServer Tools> Verification> Type Assignment Tasks> Inability to Recognize Method Expressions in Warning or Ignore (default this is mistake).

enter image description here

Image borrowed from this blog in all courtesy.

The reason is that Eclipse expects the action attribute to always return String , not void . Although the JSF action attribute is not really defined, the EL method formulas themselves also support void methods. In turn, the excessive message indicates that the main logic responsible for this check is unable to determine the individual arguments of the method and, thus, tries to compare the signature of the raw method with the collection of allowed signatures that ultimately appear in the message if there is no match was found. Based on the message, this problem may also disappear when the method has 20 or more arguments;)

This is fixed in Eclipse Luna SR1, almost 6 years after reporting the problem. Severity reduced from Error to Warning. You can still put it below to ignore.

See also:

+121
Nov 10 '11 at 17:55
source share



All Articles