struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="convertor" extends="struts-default">
<action name="login" class="com.action.UserAction">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
login.jsp
...........
<b>用户名和密码以分号隔开</b>
<form action="login.action" method="post">
User Info : <input type="text" name="user">
<input type="submit" value="提交">
</form>
......................
web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
UserAction.java
public class UserAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
UserActionConvertor.java
@Override
public Object convertValue(Map context, Object value, Class toType) {
if(User.class == toType){ //从字符串,转向对象
String [] str = (String[])value;
String s = str[0];
StringTokenizer st = new StringTokenizer(s, ";");
String username = st.nextToken();
String password = st.nextToken();
User user = new User();
user.setPassword(password);
user.setUsername(username);
return user;
}
else if(String.class == toType){
User user = (User)value;
String username = user.getUsername();
String password = user.getPassword();
return "username:"+username+"; password:"+password;
}
return null;
}
UserAction-conversion.properties
user=com.action.UserActionConvertor
result.jsp
<body>
username:${requestScope.user.username }<br/>
password:${requestScope.user.password }<br>
<s:property value="user"/>
</body>