Struts: не заполнять поля, используя мутаторы в форме - PullRequest
0 голосов
/ 20 июня 2010

Я пытаюсь использовать стойки в первый раз, и что-то не так в моей настройке.У меня есть форма действия под названием TeamForm со следующим содержимым:

package struts.forms;

import org.apache.struts.action.ActionForm;

import domain.TeamBean;

public class TeamForm extends ActionForm {

частный TeamBean teamBean = new TeamBean ();

public TeamBean getTeamBean () {return teamBean;}

public void setTeamName (String teamname) {teamBean.setTeamName (teamname);} public String getTeamName () {return teamBean.getTeamName ();}

public void setMember1 (String member1) {teamBean.setMember1 (member1);} public String getMember1 () {return teamBean.getMember1 ();}

public void setMember2 (String member2) {teamBean.setMember2 (member2);} public String getMember2 () {return teamBean.getMember2 ();}

public void setMember3 (String member3) {teamBean.setMember3 (member3);} public String getMember3 () {return teamBean.getMember3 ();}

public void setMember4 (String member4) {teamBean.setMember4 (member4);} public String getMember4 () {return teamBean.getMember4 ();}

public void setMember5 (String member5) {teamBean.setMember5 (member5);} public String getMember5 () {return teamBean.getMember5 ();}}

У меня есть действие под названием CreateTeamAction со следующим: package struts.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import managers.CreateTeamMgr;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import struts.forms.TeamForm;
import domain.TeamBean;
import exceptions.ServiceLoadException;

public class CreateTeamAction extends Action { 

public ActionForward execute (отображение ActionMapping, форма ActionForm, запрос HttpServletRequest, ответ HttpServletResponse) {

try {TeamBean teamBean = ((TeamForm) form) .getTeamBean ();логическое значение validTeam = (new CreateTeamMgr (). authenticate (teamBean));

request.setAttribute ("team", teamBean);if (validTeam) {System.out.println ("Пересылка в teamSuccess ...");return mapping.findForward ("teamSuccess");} else {System.out.println ("Пересылка в teamFailure ...");return mapping.findForward ("teamFailure");}} catch (ServiceLoadException e) {System.out.println («Пересылка к ошибке ...»);e.printStackTrace ();return mapping.findForward ("teamFailure");}
}}

Применимые части моего struts-config.xml: (Обратите внимание, что "перед открывающим тегом struts-config не является частью моего файла. Я должен был добавить его взаставить xml отображаться в окне предварительного просмотра.):

"<struts-config
  <form-beans
    <form-bean
      name="teamForm"
      type="struts.forms.TeamForm"/>    
  </form-beans>
  <action-mappings>
    <action 
      path="/team"
      type="struts.actions.CreateTeamAction"
      name="teamForm"
      scope="request">
      <forward name="success" path="/teamHome.jsp"/>
      <forward name="failure" path="/teamError.jsp"/>
    </action>
  </action-mappings>
</struts-config>

Насколько я понимаю, Struts должен использовать сеттеры в моей TeamForm для заполнения значений для TeamBean. К сожалению, этого не происходитКогда я пытаюсь запустить, все данные участника для TeamBean устанавливаются в нуль. Кто-нибудь может увидеть, что мне не хватает?

Спасибо!


Это работает сейчас, ноЯ не уверен, почему внесенные изменения помогли. Может быть, кто-то с большим опытом может сказать мне ...

У меня изначально было поле данных члена с именем teamName, поэтому я назвал мутатор setTeamName (). Я изменилполе данных должно быть teamname (без прописной буквы N) и соответствующий мутатор для setTeamname. Это изменение заставило все работать.

Как я понимаю, стандарты именования Java, teamName и setTeamName () должны были быть совершенно корректнымиимена, поэтому я не понимаю, почему изменение заглавной буквы N на строчную букву N изменило поведение, которое я видел.Кто-нибудь может мне это объяснить?

Спасибо!

1 Ответ

0 голосов
/ 14 июля 2011

Как выглядел ваш JSP? Если ваш JSP имеет входные данные со свойством «teamname», то изменение ActionForm на строчные буквы n будет работать внезапно, поскольку свойства bean-компонентов чувствительны к регистру. Если вы хотите, чтобы поле вашей ActionForm было «teamName», то свойство в JSP должно быть названо таким же образом. Я не уверен, если это ваша проблема или нет, не видя ваш JSP, но это мое первое предположение.

...