各行にボタンがあるデータテーブルがあります:
<ice:dataTable ... var="item">
<ice:column>
<h:commandButton value="Download" action="#{mybean.downloadItem(item)}" />
</ice:column>
</ice:dataTable>
バッキングBeanには次のメソッドがあります。
public void downloadItem(Item item) {
// ...
}
すべてが正常に機能します(クリックするとメソッドが実行されます)が、Eclipseの検証は次の奇妙なメッセージで失敗します。
メソッドには署名が必要です "String method()、String method()、String method(String)、String method(String、String)、String method(String、String、String)、String method(String、String、String、String) 、Stringメソッド(String、String、String、String、String)、String method(String、String、String、String、String、String)、String method(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、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリング・メソッド(ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリング・メソッド(ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリングメソッド(ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリングメソッド(S 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、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング・メソッド(ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリング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、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング)、ストリングメソッド(ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、ストリング、文字列、文字列、文字列、文字列、文字列、文字列、文字列、文字列、文字列、文字列)」が署名「void method()」
私に何ができる?
関連する場合は、Tomcat 7でEclipse Indigo SR1を使用しています。
それを無視します。 Eclipseは不機嫌です。 Window> Preferences> Web> JavaServer Faces Tools> Validation> Type Assignment Problems> Method expression signature incompatibilitytoWarningまたはIgnore(デフォルトはError)。
このブログ からの画像はすべて礼儀正しく借りました。
その理由は、Eclipseはaction
属性がString
ではなく、常にvoid
を返すことを期待しているためです。実際、JSF action
属性では指定されていませんが、ELメソッド式自体もvoid
メソッドを実際にサポートしています。過度に熱心なメッセージは、この検証に関与する基になるロジックが個々のメソッド引数を決定できないことを示唆しているため、未処理のメソッドシグネチャを許可されたシグネチャのコレクションと比較しようとし、一致しない場合に最終的にメッセージに表示されます見つかりました。メッセージに基づいて、この問題はメソッドに20個以上の引数がある場合にも消える可能性があります;)
この問題は、問題が報告されてから約6年後にEclipse Luna SR1で修正されました。重大度はErrorからWarningに減少しました。まだIgnoreより低くすることもできます。