Struts2.0 类型转换学习笔记
<s:form action="pointaction">
<s:textfield name="point" label="point"></s:textfield>
<s:textfield name="point" label="point2"></s:textfield>
<s:textfield name="point" label="point3"></s:textfield>
<s:textfield name="age" label="age"></s:textfield>
<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="date" label="birthday"></s:textfield>
<s:submit label="submit"></s:submit>
</s:form>
当在input.jsp页面输入内容后按下sumbit后,系统进入后台的struts.xml文件中查找”pointaction”。
<struts>
<package name="test" extends="struts-default">
<action name="pointaction" class="com.PointAction">
<result name="success">/output.jsp</result>
</action>
</package>
</struts>
系统找到 action中name 为”pointaction” 的action,生成一个class为com.PointAction的实例用于处理客户端请求。
package com;
import java.util.Date;
import java.util.List;
import bean.Point;
import com.opensymphony.xwork2.ActionSupport;
public class PointAction extends ActionSupport {
private int age;
private String username;
private Date date;
private List<Point> point;
public List<Point> getPoint() {
return point;
}
public void setPoint(List<Point> point) {
this.point = point;
}
//别的set get方法省略
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
当用intput.jsp中输入为PointAction中的 point属性赋值时,会查看有没有属性文件用于解析point属性的类型Point,首先查找和PointAction在一个包下的属性解析文件PointAction-conversion.properties文件。
point=converter.PointConverter3
此句代码是说point属性用converter.PointConverter3类来解析,
package converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import bean.Point;
public class PointConverter3 extends StrutsTypeConverter
{
@Override
public Object convertFromString(Map context, String[] values, Class toClass)
{
//用于把客户端输入赋给PointAction中setPoint()方法。 }
@Override
public String convertToString(Map context, Object o)
{
//把服务器point属性返回PointAction中getPoint()方法。
}
}
主要用于解析PointAction中Point类型。
其实在执行execute()方法前还会执行validate() validateXxx()等方法用于查验用户输入的错误。
execute() return SUCCESS;
接着系统会在struts.xml文件中查找name为”success”的result.jsp页面。
result.jsp主要代码
username:<%=request.getParameter("username")%><br>
password:<%=request.getParameter("password")%>
说明: 把input.jsp页面中的输入到result.jsp中。