我有一个 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;
}
我想编辑输入文本/输出文本值。当我单击编辑按钮时,我在服务器日志中看到:
[#|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。您可能会错误/忽略 actionListener
和 action
之间的区别,后者是您想要返回字符串以进行导航的地方。目的。欲了解更多信息,请访问 Differences between action and actionListener
我会将方法的名称更改为语义上更合适的其他名称。您应该避免使用 get
作为方法前缀,除非它们是实际的 getter。您刚刚遇到了原因之一。
关于java - 输出文本和输入文本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742666/