outputtext和inputtext编辑

时间:2014-05-19 16:20:51

标签: 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>

类别:

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

我想编辑intputtext / outputtext值。当我点击编辑按钮,然后我在服务器日志中看到:

  

[#| 2014-05-19T18:08:42.607 + 0200 |严重|甲骨文glassfish3.1.2 | javax.faces.event | _ThreadID = 74; _ThreadName =螺纹-2; | javax.el.MethodNotFoundException:   找不到方法:   hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt()           在com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:160)

     

javax.enterprise.resource.webcontainer.jsf.context | _ThreadID = 74; _ThreadName =线程2; |方法   找不到:hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt()   javax.faces.event.AbortProcessingException:找不到方法:   hu.educatio.osszesito.teszt.TesztBean@37247706.editTeszt()           在javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)

如何编辑outputtext值?

1 个答案:

答案 0 :(得分:1)

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

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

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