坚持每天写博文,积累下开发中的点点滴滴
Struts2中三种传输方式:1 Action本身作为model对象,通过成员setter封装
(属性驱动方式)
遇到了问题:只能传输一个值;
paramAction0.jsp:
</head>
<form action="paramAction0.action" method="post">
名字:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="提交"/><br/>
</form>
</body>
param0.xml:
<struts>
<constant name="struts.devMode" value="true" />
<package name="paramthreeways" extends="struts-default">
<!-- <global-results>
<result name="input">view/param/paramAction1.jsp</result>
</global-results> -->
<action name="paramAction0" class="paramthreeways.ParamAction0">
</action>
</package>
</struts>
paramAction0:
private static final long serialVersionUID = 1L;
public String execute() throws Exception {
System.out.println("name=" + name);
System.out.println("age=" + age);
return NONE;
}
//字段:Filed
private String name;
private int age;
//属性(Property): nane
public void setName(String name) {
System.out.println(name);
this.name =name;
}
//属性:age
public void setAge(int age) {
System.out.println(age);
this.age = age;
}
遇到问题:输入【名字】:AA 【年龄】:SS 只能打印【名字】
原因:成员变量【年龄】是int类型,在input标签中只能输入int类型才能传输
亲测:成员变量不生成setter方法也能传值,但当前台向后台一个action发出请求时,Struts2会相应的new出一个action对象,并调用setXXX方法。其实action中设置的变量名 可以不和前台传来参数名向同,但setXXX,这个XXX必须与前台的参数名相同
//字段:Filed
private String text;
private int text2;
public String getText() {
return text;
}
public void setName(String text) {
this.text = text;
}
public int getText2() {
return text2;
}
public void setAge(int text2) {
this.text2 = text2;
}