2013-12-10 3 views
2

Я пытаюсь добавить флажок в jsp, чтобы принять условия и положения перед входом на сайт. Я продолжаю получать ту же ошибку, что у меня нет метода getter, хотя у меня есть метод getter, и я не вижу никаких опечаток. Я не понимаю, чего мне не хватает.Отсутствие метода Getter Ошибка при получении 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 
+1

Я не знаю, что рамки вы используете ОЖИДАЕТ, но при попытке переименования метод из '' isTermsCheckbox' в getTermsCheckbox'? – Jesper

+0

Я использую Struts 1. У меня есть еще одна jsp/form с установленным флажком, точно так же, как и это, и он отлично работает. Я даже скопировал код и просто изменил имя и получил эту ошибку на этом jsp, но с другой ошибкой не было. Я попытался изменить имя на getTermsCheckbox и получить ту же ошибку. Я попытался использовать метод генерации get/seters в eclipse, чтобы сгенерировать их и все еще получить ошибку. Я попытался использовать строку, я пробовал логическое. Такая же ошибка каждый раз. – Nina

ответ

0

Смотрите следующее:

Java: how to name boolean properties

Написать вам заявление собственности, как это:

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

Где form это экземпляр формы LoginForm.

0

Я не уверен, что JSP такой способ, но существуют определенные структуры, для которых требуется явно указать префикс get или set, setTermsCheckbox и getTermsCheckbox. Попробуйте это и посмотрите, исправляет ли она проблему.

1

Это должно быть isTermsCheckbox:

public boolean isTermsCheckbox(){ 
    return termsCheckbox; 
} 

И получить значение свойства, как:

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

Это именно то, что есть в его примере. – csvan

+0

Как правило, это стандарт соглашения об именах Java. –

+1

Да, но это проблема с парсером, а не с соглашениями Java. Синтаксический анализатор (насколько мне известно) не выделяет действительные геттеры на основе типа возврата - они всегда должны иметь определенный формат. – csvan

0

Во-первых, вам нужно проверить атрибуту action в вашем html:form тег в файле login.jsp.

<%@ 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 (LoginForm в моем случае) для отображения этого действия должны быть такими же, со свойством termsCheckbox.

<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; 
    } 

} 
+0

У меня есть все это, я просто не показывал весь код в своем примере. Я должен упомянуть, что эта система работает уже много лет, и она работает нормально, пока я не добавлю этот флажок в jsp. – Nina

+0

Возможно, более подробная таблица stacktrace может отображать другие детали. –

0

Его так поздно опоздать, и вы, возможно, уже нашли решение для этого, я хотел бы предложить решение, которое сработало для меня.

Как вы уже упоминал, что у вас есть скопирован формы, пожалуйста, обеспечить 2 вещи:

  1. Вашего <html:checkbox property = "" /> тег должен быть в пределах <html:form></html:form> тега
  2. Вашего <html:form action=""> тег свойство действия должно соответствовать <action path=""> недвижимости в файле конфигурации struts.

Во время копирования существующего кода существует вероятность того, что мы можем забыть применить изменения 2-й точки.

0

Попробуйте реализовать следующее на форме:

public boolean getTermsCheckbox() 
{ 
    return termsCheckbox; 
} 
Смежные вопросы