我第一次尝试使用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); } 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的Action,其中包含以下内容: 包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 {
公共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”);
}
其他{
System.out.println(“Forwarding to 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中的setter来填充TeamBean的值。不幸的是,这种情况并没有发生。当我尝试运行时,TeamBean的所有成员数据都设置为null。谁能看到我错过的东西?
谢谢!
它现在正在运作,但我不确定为什么我所做的改变有所帮助。也许有经验的人可以告诉我......
我最初有一个名为teamName的成员数据字段,因此我将mutator命名为setTeamName()。我将数据字段更改为teamname(无资本N),并将相应的mutator更改为setTeamname。这一改变使一切顺利。
据我了解Java命名标准,teamName和setTeamName()应该是完全有效的名称,所以我不明白为什么将大写字母N改为小写字母N会改变我所看到的行为。任何人都可以向我解释这个吗?
谢谢!
答案 0 :(得分:0)
你的JSP看起来像什么?如果您的JSP有一个带有“teamname”属性的输入,那么将ActionForm更改为小写n会突然发生,因为bean属性区分大小写。如果您希望ActionForm的字段为“teamName”,那么JSP中的属性必须以相同的方式命名。如果没有看到你的JSP,我不确定这是不是你的问题,但这是我的第一次猜测。