我第一次尝试使用 struts,但我的设置有问题。我有一个名为 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); } 公共字符串 getTeamName() { return teamBean.getTeamName(); }
公共无效 setMember1(String member1) { teamBean.setMember1(member1); } 公共字符串 getMember1() { 返回 teamBean.getMember1(); }
公共无效 setMember2(String member2) { teamBean.setMember2(member2); } public String getMember2() { return teamBean.getMember2(); }
公共无效 setMember3(String member3) { teamBean.setMember3(member3); } public String getMember3() { return teamBean.getMember3(); }
公共无效 setMember4(String member4) { teamBean.setMember4(member4); } public String getMember4() { return teamBean.getMember4(); }
公共无效 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 执行(ActionMapping 映射,ActionForm 表单,HttpServletRequest 请求,HttpServletResponse 响应){
尝试 { TeamBean teamBean = ((TeamForm)form).getTeamBean(); boolean 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 的所有成员数据都设置为 null。谁能看到我错过了什么?
谢谢!
它现在可以工作了,但我不确定为什么我所做的改变会有所帮助。也许有经验的人可以告诉我...
我最初有一个名为 teamName 的成员数据字段,因此我将 mutator 命名为 setTeamName()。我将数据字段更改为 teamname(没有大写 N),并将相应的 mutator 更改为 setTeamname。这种变化使一切正常。
据我了解 Java 命名标准,teamName 和 setTeamName() 应该是完全有效的名称,所以我不明白为什么将大写 N 更改为小写 N 会改变我所看到的行为。谁能给我解释一下?
谢谢!