初めてストラットを使用しようとしていますが、セットアップに問題があります。次の内容の 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 チーム名) { teamBean.setTeamName(チーム名); } 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 レスポンス) {
{ TeamBean teamBean = ((TeamForm)form).getTeamBean(); を試してください。boolean validTeam = (new CreateTeamMgr().authenticate(teamBean));
request.setAttribute("チーム", teamBean); if(validTeam) { System.out.println("teamSuccess に転送しています..."); mapping.findForward("teamSuccess"); を返します。} else { System.out.println("teamFailure に転送しています..."); mapping.findForward("teamFailure"); を返します。} } catch (ServiceLoadException e) { System.out.println("転送に失敗しました..."); e.printStackTrace(); mapping.findForward("teamFailure"); を返します。}
} }
私の 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 のすべてのメンバー データが null に設定されます。誰かが私が見逃しているものを見ることができますか?
ありがとう!
現在は機能していますが、行った変更がなぜ役に立ったのかわかりません。経験者の方が教えてくださるかもしれませんが…
私はもともと teamName というメンバー データ フィールドを持っていたので、ミューテーターに setTeamName() という名前を付けました。データ フィールドを teamname (大文字の N なし) に変更し、対応するミューテーターを setTeamname に変更しました。その変更により、すべてが機能しました。
Java の命名基準を理解しているので、teamName と setTeamName() は完全に有効な名前である必要があるため、大文字の N を小文字の N に変更すると動作が変わった理由がわかりません。誰かが私にこれを説明できますか?
ありがとう!