java - 输出文本和输入文本编辑

标签 java jsf-2 primefaces panelgrid

我有一个 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>

类(class):

private boolean canEdit = false;;

public boolean isCanEdit() {
    return canEdit;
}

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

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

enter image description here

我想编辑输入文本/输出文本值。当我单击编辑按钮时,我在服务器日志中看到:

[#|2014-05-19T18:08:42.607+0200|SEVERE|oracle-glassfish3.1.2|javax.faces.event|_ThreadID=74;_ThreadName=Thread-2;|javax.el.MethodNotFoundException: Method not found: 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;|Method not found: hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt() javax.faces.event.AbortProcessingException: Method not found: hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt() at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)

如何编辑输出文本值?

最佳答案

您的方法被命名为 getEditTeszt(),这使得它按照约定可以成为 bean 属性(带有 get 前缀和返回值)。因此,当您为 actionListener 使用 "#{TesztBean.editTeszt}" 时,它会将其读取为属性而不是方法,因为您省略了 getEditTeszt 中的 get。因此,异常消息“找不到方法”,因为需要一个方法。

一个简单的修复方法就是放入 get"#{TesztBean.getEditTeszt}"。但在这种情况下,这是没有意义的。首先,您的操作监听器方法没有理由返回任何内容。 尤其当您所做的只是返回 null 时。您应该让该方法返回 void。您可能会错误/忽略 actionListeneraction 之间的区别,后者是您想要返回字符串以进行导航的地方。目的。欲了解更多信息,请访问 Differences between action and actionListener

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

关于java - 输出文本和输入文本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742666/

相关文章:

java - junitparameter异常方法应该没有参数

java - 带有选项卡的 Activity 中的布局刷新问题

java - Spring Security : Custom Login without backing bean, 仅使用 spring security 配置作为 j_spring_security_check

firefox - Primepush ...无法建立连接,Websocket关闭,原因: Connection was closed abnormally

jsf - Primefaces 数据表 : need to export additional columns to excel that are not displayed on datatable

java - JTable 单元格编辑器中自动完成 JComboBox

java - eclipse + Maven : force Execution Environment "JavaSE-1.6" instead of fixed JDK

java - 如何使用 PrimeFaces 在 tabView 中渲染图表

java - 调用 TreeSet<Long>.contains( Long.valueOf( someLongValue ) ) 时出现 ClassCastException

java - 如何编辑数据表的行(JAVA + Primefaces + JSF + MYSQL)