- 基本属性的注入
<s:form action="login" method="get">
<s:textfield name="username" label="姓名"/>
<s:password name="userpassword" label="年龄"/>
<s:submit value="提交"/>
</s:form>
public class LoginAction extends ActionSupport{
private String username;
private int userpassword;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getUserpassword() {
return userpassword;
}
public void setUserpassword(int userpassword) {
this.userpassword = userpassword;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("pppp");
return SUCCESS;
}
}
在必须保证表单元素的name和Action类中的属性名一致,且Action中属性名必须提供set、get方法。
<s:property value="username"/><!-- 表单提交这两个变量会添加到stack context(可以通过<s:debug/>查看)直接输入变量名就可以获取 -->
<s:property value="userpassword"/>
- 基于域模型的参数注入
我们使用有相同点的属性都喜欢把它封装,这样比较结构化,简单明了。第一种方式注入请求参数在参数过多的情况下可能造成action中的代码过多。
提供一个JavaBean
package com.example.test.bean;
public class User {
private String username;
private String userpassword;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
}
<s:form action="login1" method="get">
<s:textfield name="user.username" label="姓名"/>
<s:password name="user.userpassword" label="年龄"/>
<s:submit value="提交"/>
</s:form>
package com.example.test.action;
import com.example.test.bean.User;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction1 extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
//Action必须要提供域对象的set、get,且域对象的属性名必须和在Jsp的name一致。
<s:property value="user.username"/>
<s:property value="user.userpassword"/>
虽然本文的内容,不是都重要,看似很简单,但是这种注入的思想,在Spring中也有,需要需要你知道有这么一件事。