【发布时间】:2011-03-05 21:57:24
【问题描述】:
我是第一次尝试使用 struts,但我的设置有问题。我有一个名为 TeamForm 的操作表单,其中包含以下内容:
package struts.forms;
import org.apache.struts.action.ActionForm;
import domain.TeamBean;
public class TeamForm extends ActionForm {
私有 TeamBean teamBean = new TeamBean();
公共 TeamBean getTeamBean(){ 返回teamBean; }
public void setTeamName(String teamname) { teamBean.setTeamName(teamname); } 公共字符串 getTeamName() { 返回 teamBean.getTeamName(); }
public void setMember1(String member1) { teamBean.setMember1(member1); } 公共字符串 getMember1() { 返回 teamBean.getMember1(); }
public void setMember2(String member2) { teamBean.setMember2(member2); } 公共字符串 getMember2() { 返回 teamBean.getMember2(); }
public void setMember3(String member3) { teamBean.setMember3(member3); } 公共字符串 getMember3() { 返回 teamBean.getMember3(); }
public void setMember4(String member4) { teamBean.setMember4(member4); } 公共字符串 getMember4() { 返回 teamBean.getMember4(); }
public void setMember5(String member5) { teamBean.setMember5(member5); } 公共字符串 getMember5() { 返回 teamBean.getMember5(); } }
我有一个名为 CreateTeamAction 的操作,其中包含以下内容: 打包 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("team", teamBean);
如果(有效团队){
System.out.println("转发到teamSuccess...");
return mapping.findForward("teamSuccess");
}
别的 {
System.out.println("转发到teamFailure...");
return mapping.findForward("teamFailure");
}
} 捕捉(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 会改变我所看到的行为。谁能给我解释一下?
谢谢!
【问题讨论】:
标签: struts-1 actionform