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;
}   

在此处输入图像描述

我想编辑 intputtext/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.education.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:找不到方法: hu.education.osszesito.teszt.TesztBean@37247706.editTeszt() 在 javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)

如何编辑输出文本值?

4

1 回答 1

1

您的方法名为getEditTeszt(),这使得它有资格成为约定俗成的 bean 属性(带有get前缀和返回值)。因此,当您使用"#{TesztBean.editTeszt}"for you时actionListener,它会将其作为属性而不是方法读取,因为您getgetEditTeszt. 因此异常消息"Method not found",作为一种方法是必需的。

一个简单的解决方法就是放入get"#{TesztBean.getEditTeszt}"。但在这种情况下,这是没有意义的。首先,您的动作侦听器方法没有理由返回任何内容。尤其是当您所做的只是返回 null 时。您应该使方法返回无效。actionListener您可能会误解/错过and之间的区别action,后者是您确实想要返回字符串的地方,以用于导航目的。在 action 和 actionListener 之间阅读更多内容

我会将方法的名称更改为语义上更合适的名称。你应该避免使用get你的方法前缀,除非它们是真正的 getter。您刚刚遇到了其中一个原因。

于 2014-05-19T17:10:26.440 回答