我有一个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 |严重|甲骨文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值?
答案 0 :(得分:1)
您的方法名为getEditTeszt()
,这使得它有资格按照约定成为bean属性(带有get
前缀和返回值)。因此,当您"#{TesztBean.editTeszt}"
使用actionListener
时,它会将其作为属性读取而不是方法,因为您要忽略get
中的getEditTeszt
。因此,异常消息"Method not found"
,作为一种方法是必需的。
一个简单的解决方法就是放入get
→"#{TesztBean.getEditTeszt}"
。但在这种情况下,它毫无意义。首先,您的动作侦听器方法没有理由返回任何内容。 特别是当你所做的只是返回null时。您应该使方法返回void。您可能会误导/错过actionListener
和action
之间的区别,后者是您做想要返回字符串的区别,出于导航目的。阅读更多Differences between action and actionListener
我会将方法的名称更改为更符合语义的其他方法。您应该避免使用get
作为方法前缀,除非它们是实际的getter。你刚刚遇到了其中一个原因。