java - 当有Getter时没有Getter方法错误

  显示原文与译文双语对照的内容

我正在尝试向jsp添加一个复选框,以便在进入站点之前接受条款和条件。 尽管我有一个getter方法,但没有看到任何错误,但我仍然得到了一个不同的错误。 我不明白自己所缺少的。

login.jsp


<html:checkbox property="termsCheckbox" value="true"/>

LoginForm.java


public final class LoginForm extends ActionForm
{ 
private boolean termsCheckbox = false;

public void setTermsCheckbox(boolean termsCheckbox)
{
 this.termsCheckbox = termsCheckbox;
}

public boolean isTermsCheckbox()
{
 return termsCheckbox;
}
}

这是我进入JSP时遇到的错误:


org.apache.jasper.JasperException: An exception occurred processing JSP page/login.jsp 
at line 73

73: <html:checkbox property="termsCheckbox" title="terms" value="true"/> 

javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method 
for property termsCheckbox of bean org.apache.struts.taglib.html.BEAN

时间:

它应该是 isTermsCheckbox:


public boolean isTermsCheckbox(){
 return termsCheckbox;
}

获取你的属性值,如下所示:


<html:checkbox property="isTermsCheckbox" value="true"/>

我不确定JSP是否这种方式,但是有些框架需要显式的名称获取或者设置前缀,例如setTermsCheckbox和 getTermsCheckbox 。 试试这个,看看问题是否解决了。

请参见以下内容:

Java: 如何命名布尔属性

像这样编写你的属性声明:


<html:checkbox property="${form.termsCheckbox}" title="terms" value="true"/> 

form 是你的表单LoginForm实例。

首先,你需要在文件 login.jsp 中的html:form 标记中检查属性的英镑


<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="login">
 <html:checkbox property="termsCheckbox">Terms</html:checkbox>
 <html:submit/>
</html:form>

接下来,操作确定后,与该操作映射对应的关联表单为 name 必须同属性相同。


<form-beans>
 <form-bean name="LoginForm" type="test.form.LoginForm"/>
</form-beans>
<action-mappings>
 <action path="/login" type="test.action.LoginAction" name="LoginForm"
 input="/login.jsp" scope="request"></action>
</action-mappings>

操作表单的代码不需要任何特定的。


public final class LoginForm extends ActionForm {

 boolean termsCheckbox;

 public boolean isTermsCheckbox() {
 return termsCheckbox;
 }

 public void setTermsCheckbox(boolean termsCheckbox) {
 this.termsCheckbox = termsCheckbox;
 }

}

...