Я пытаюсь использовать распорки в первый раз, и что-то не так в моей настройке. У меня есть форма действия под названием TeamForm со следующим содержимым:
package struts.forms;
import org.apache.struts.action.ActionForm;
import domain.TeamBean;
public class TeamForm extends ActionForm {
частный TeamBean teamBean = новый TeamBean();
public TeamBean getTeamBean(){ return teamBean; }
public void setTeamName (имя команды String) { teamBean.setTeamName (имя команды); } общественная строка 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 = (новый CreateTeamMgr().authenticate(teamBean));
request.setAttribute("команда", teamBean); if(validTeam) { System.out.println("Переадресация в teamSuccess..."); вернуть сопоставление.findForward("успех команды"); } else { System.out.println("Пересылка в teamFailure..."); вернуть сопоставление.findForward("teamFailure"); } } catch (ServiceLoadException e) { System.out.println("Переадресация на сбой..."); e.printStackTrace(); вернуть сопоставление.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(). Я изменил поле данных на имя команды (без заглавной буквы N) и соответствующий мутатор на setTeamname. Это изменение заставило все работать.
Насколько я понимаю стандарты именования Java, teamName и setTeamName() должны были быть вполне допустимыми именами, поэтому я не понимаю, почему изменение заглавной N на строчную N изменило поведение, которое я видел. Кто-нибудь может мне это объяснить?
Спасибо!