当多个action中都须要对同一对象进行转换时,可用全局转换
配置文件
在src下建一文件xwork-conversion.properties,文件名固定。
com.test.bean.Point=com.test.converter.PointConverter
前面表示对所有action中的Point类都时行转换,后面的表示用什么转换器,Point一定要加包名。
converter
以下这种converter较常用,因为转换方向区分开了。
PointConverter2.java
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.test.bean.Point;
public class PointConverter2 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Point point = new Point();
String[] paramValues = values[0].split(",");
int x = Integer.parseInt(paramValues[0]);
int y = Integer.parseInt(paramValues[1]);
point.setX(x);
point.setY(y);
return point;
}
@Override
public String convertToString(Map context, Object o) {
Point point = (Point)o;
int x = point.getX();
int y = point.getY();
String result = "[ x = " + x + " , y = " + y + " ]";
return result;
}
}
除此之外还可用另一种方式进行转换。
即不用converter,而是在jsp页面中将对对象的属性分别用文本输入框来表示,如
<s:textfield name="point.x" label="x"></s:textfield>
<s:textfield name="point.y" label="y"></s:textfield>
而在显示页面上会调用对象的toString方法。
point:<s:property value="point"/>
此方式需要Point提供一个无参构造方法。
但不建议使用此方式,因为jsp页面会显得繁琐。