Я пытаюсь использовать стойки в первый раз, и что-то не так в моей настройке.У меня есть форма действия под названием 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 изменило поведение, которое я видел.Кто-нибудь может мне это объяснить?
Спасибо!