2017-09-30 10 views
0

されているがI以下の豆持っている:それは私のXMLファイルに登録されていますは、この方法が見つからないというエラーを取得する方法は、実行

package com.company.test; 

public class EventFileBean 
{ 
    public EventFileBean() 
    { 
     System.out.println("testing... inside EventFileBean"); 
    } 
} 

<managed-bean> 
    <managed-bean-name>eventFileBean</managed-bean-name> 
    <managed-bean-class>com.company.test.EventFileBean</managed-bean-class> 
    <managed-bean-scope>view</managed-bean-scope> 
</managed-bean> 

私はそれを呼んでいるが:

<p:commandButton value="#{msg.yes}" ajax="false" 
       action="#{eventFileBean.eventFileBean}" 
       styleClass="stdButton greenButton" oncomplete="confirmation.hide()"/> 

エラー" javax.el.MethodNotFoundException: /workshop/editWorkshop.xhtml @86,221 action="#{eventFileBean.eventFileBean}"でクラッシュしますが、ouメッセージ"testing... inside EventFileBean"であるので、メソッドを見つけたはずです。

何が間違っているのか、何が他にセットアップする必要があるのか​​教えていただけますか?

答えて

0

あなたのメソッドEventFileBeanはクラスと同じ名前なので特別な方法です:クラスのコンストラクタであり、その理由でその名前では認識されません。

大文字と小文字の区別がついているかどうかはわかりません。メソッドは大文字で始まり、xmlでは最初に小文字のメソッドを検索します。 Javaでは大文字と小文字が区別されるため、これらは同じではありません。

メソッドの名前をクラス名以外の名前に変更します。最初の文字が既に機能しているので、小文字を使用している可能性があります。そうでない場合は、まったく別の名前を試してください。

+0

私はすでにメソッドに別の名前をつけてみました。私がそれをしたとき、それはまだクラッシュしましたが、 "testing ... inside EventFileBean"というメッセージも表示されませんでした。したがって、最初のインスタンスではコンストラクターが呼び出されましたが、2番目のインスタンスではコンストラクターが呼び出されませんでした。また、私のコードは、他のコードと同じコンベンションで、問題はありません。 – Ken

+0

オブジェクトが作成されたときにコンストラクタがJavaによって自動的に呼び出されるため、メッセージが出力されます。その場合、コンストラクターで印刷されるメッセージは、ユーザーの構成とは関係ありません。 – cello

+0

私はそれを修正しました。以前はコンストラクタの名前を別の名前に変更したときにクラッシュしましたが、今回はコンストラクタをそこに残して別の名前の別のメソッドを作成しました。今それは動作します。 – Ken

関連する問題