<package name="land" namespace="/" extends="struts-default"> <action name="UserLand" class="com.UserLandAction"> <param name="userName"></param> <param name="password"></param> <result name="success">/manage/index.jsp</result> <result name="error">/userLand.jsp</result> </action> </package> 以上Struts2 配置文件里的 <param name="userName"></param> <param name="password"></param> 和在Action里写 private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } 问题1:两者有什么区别? 问题2:如有采用配置文件的方式,在Action中如何调用配置的变量?
答: 1、页面传参与配置传参的区别: 如果页面Form表单的参数在Action类中有相应的setter方法,则会优先取页面Form表单传过来的值,如果页面没有该属性同名的参数,则会从配置文件中取同名的参数值作为它的默认值 2、Action中调用配置的变量,只需要该参数的setter方法即可,不需手动写代码,Struts2默认会同名赋值。 例:jsp页面 <form name="fm" action="paramTest.action" method="post"> <input type="text" name="username" value="wjlvivid"> <input type="text" name="password" value="123456"> <input type="submit" value="提交"> </form> Action类 ParamTestAction.java private String username; private String password; //相应的setter、getter方法..... public String paramTest(){ System.out.println("username:"+username+" password:"+password); return "success"; } 配置文件: <action name="paramTest" class="com.sino.ParamTestAction" method="paramTest"> <param name="username">wjl</param> <param name="password">000000</param> <result name="success">/menu/menu.jsp</result> </action> 请求一下该action,可发现输出的值为: username:wjlvivid password:123456 如果把<input type="text" name="password" value="123456">去掉,则输出 配置的参数值 username:wjlvivid password:000000 <param>的作用就是为Action中的某些属性赋一个默认值,通常这样做的如配置路径、文件名之类的....