0.建立项目
建立项目并使用myeclipse自带的工具配置Struts 2。我的项目名为Ex4
1.构造模型Tel类
package org.vo;
public class Tel {
private String sectionNo;//区号
private String telNo;//电话号
public String getSectionNo() {
return sectionNo;
}
public void setSectionNo(String sectionNo) {
this.sectionNo = sectionNo;
}
public String getTelNo() {
return telNo;
}
public void setTelNo(String telNo) {
this.telNo = telNo;
}
}
2.编写界面converter2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>converter2.jsp</title>
</head>
<body>
<s:form action="typeconverter2" method="post">
<s:textfield name="tel" label="输入电话"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>
3.编写控制器Action
package org.action;
import org.vo.Tel;
import com.opensymphony.xwork2.ActionSupport;
public class MyTypeConverterAction extends ActionSupport{
private Tel tel;
public Tel getTel() {
return tel;
}
public void setTel(Tel tel) {
this.tel = tel;
}
public String excute() throws Exception{
return SUCCESS;
}
}
4.配置struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="typeconverter2" class="org.action.MyTypeConverterAction">
<result name="success">/show2.jsp</result>
</action>
</package>
</struts>
5.实现类型转换器
(可以将输入的字符串[完整的电话],与字符串数组[电话与区号分割]相互转换)
package org.converter;
import java.util.Map;
import ognl.DefaultTypeConverter;
import org.vo.Tel;
public class MyTypeConverter extends DefaultTypeConverter{
public Object convertValue(Map context,Object value,Class toType){
if(toType==Tel.class){
String[] str=(String[]) value;
Tel t = new Tel();
for(int i=0;i<str.length;i++){
if(str[i].indexOf("-")>0){
String[] tels=str[0].split("-");
t.setSectionNo(tels[0]);
t.setTelNo(tels[1]);
}
else
return null;
}
return t;
}else if(toType==String.class){
Tel t=(Tel)value;
return "["+t.getSectionNo()+"-"+t.getTelNo()+"]";
}
return null;
}
}
6.注册类型转换器
文件MyTypeConverterAction-conversion.properties需与同Action放在同一个包下,内容为”变量名=包名.类名” 变量名是Action中转换的属性名,包名.类名指定要用的自定义类型转换器。
tel=org.converter.MyTypeConverter
7.编写转换后界面show2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>show2.jsp</title>
</head>
<body>
<s:property value="tel"/><br>
区号:<s:property value="tel.sectionNo"/><br>
号码:<s:property value="tel.telNo"/><br>
</body>
</html>
一个简单的自定义类型转换器就写完了,使用tomcat 8发布项目后,在浏览器输 http://localhost:8080/Ex4/converter2.jsp,显示效果如下:
按上图输入后点击提交按钮则跳转显示
参考:
[1]郑阿奇.Java EE实用教程[M].北京:电子工业出版社,2015.2:86-89