0

私はjsfページとJavaクラスを持っています:

 <p:panelGrid id="grid" columns="2">      
     <h:outputText value="ID:"/>
     <h:outputText value="#{TesztBean.select.id}"/>
     <h:outputText value="Name:"/>
     <h:outputText value="#{TesztBean.select.name}"/>
     <h:outputText value="Age:"/>
     <h:outputText value="#{TesztBean.select.age}"/>
     <h:outputText value="Kapcsolatfelvetel megtortent:"/>                    
     <h:inputText  value="#{TesztBean.select.kapcsolatfelvetel_megtortent}" size="10" rendered="#{TesztBean.canEdit}" />
     <h:outputText value="#{TesztBean.select.kapcsolatfelvetel_megtortent}" rendered="#{not TesztBean.canEdit}" />
     <h:outputText value="Levélküldés dátuma:"/>
     <h:inputText  value="#{TesztBean.select.levelkuldesenek_datuma}" size="10" rendered="#{TesztBean.canEdit}" />
     <h:outputText value="#{TesztBean.select.levelkuldesenek_datuma}" rendered="#{not TesztBean.canEdit}" />
     <h:outputText value="Képzés kezdete:"/>        
     <h:inputText  value="#{TesztBean.select.kepzes_kezdete}" size="10" rendered="#{TesztBean.canEdit}" />
     <h:outputText value="#{TesztBean.select.kepzes_kezdete}" rendered="#{not TesztBean.canEdit}" />
     <h:outputText value="Képzés vege:"/>                    
     <h:inputText  value="#{TesztBean.select.kepzes_vege}" size="10" rendered="#{TesztBean.canEdit}" />
     <h:outputText value="#{TesztBean.select.kepzes_vege}" rendered="#{not TesztBean.canEdit}" />
     <h:commandButton id="commandBena"  value="Edit" actionListener="#{TesztBean.editTeszt}" rendered="#{not TesztBean.canEdit}" />                                                                     
</p:panelGrid>

クラス:

private boolean canEdit = false;;

public boolean isCanEdit() {
    return canEdit;
}

public void setCanEdit(boolean canEdit) {
    this.canEdit = canEdit;
}   

public String getEditTeszt(){
    setCanEdit(true);
    return null;
}   

ここに画像の説明を入力

inputtext/outputtext 値を編集したいと思います。編集ボタンをクリックすると、サーバーログに次のように表示されます。

[#|2014-05-19T18:08:42.607+0200|SEVERE|oracle-glassfish3.1.2|javax.faces.event|_ThreadID=74;_ThreadName=Thread-2;|javax.el.MethodNotFoundException: メソッドが見つかりません: hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt() at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:160)

javax.enterprise.resource.webcontainer.jsf.context|_ThreadID=74;_ThreadName=Thread-2;|メソッドが見つかりません: hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt() javax.faces.event.AbortProcessingException:メソッドが見つかりません: javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182) で hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt()

outputtext 値を編集するにはどうすればよいですか?

4

1 に答える 1

1

メソッドの名前は です。これにより、慣例により (プレフィックスと戻り値をgetEditTeszt()使用して) Bean プロパティになることができます。getしたがって、"#{TesztBean.editTeszt}"for youを使用するとactionListener、 を省略しているため、メソッドではなくプロパティとして読み取られgetますgetEditTeszt。したがって、"Method not found"メソッドとして例外メッセージが必要です。

get簡単な修正は、 →を入れるだけ"#{TesztBean.getEditTeszt}"です。しかし、この文脈では意味がありません。まず第一に、アクション リスナー メソッドには何も返す理由がありません。特に、null を返すだけの場合はなおさらです。メソッドが void を返すようにする必要があります。actionListenerとの違いを誤解/見逃している可能性がありactionます。後者は、ナビゲーション目的で文字列を返したい場合です。詳細については、action と actionListener の違いを参照してください。

メソッドの名前を意味的に適切な名前に変更します。get実際のゲッターでない限り、メソッド プレフィックスに使用しないでください。その理由の 1 つに出会ったところです。

于 2014-05-19T17:10:26.440 に答える