您的位置:首页 > 编程语言 > Java开发

struts2-局部类型和全局类型转换器

2014-02-15 16:19 489 查看
局部类型转换器:

1)局部类型转换器仅仅对某个Action的属性起作用

2)properties文件名对应于Action类名,而且格式为'Action类名-conversion.properties',

文件必须和Action类处于同一个包下,properties文件内容格式为:属性名=对应转换封装类路径。

全局类型转换器:

1)全部类型转换器对所有Action的特定类型的属性都会生效。

2)properties文件名固定’xwork-conversion.properties‘,

文件处于src目录下,properties文件内容格式为:类名名=对应转换封装类路径。

实例:

编辑环境:myeclipse10+struts2.2.1

局部类型转换器实现:

1)建3个jsp

index.jsp

<%@pagelanguage="java"contentType="text/html;charset=GBK"%>
<html>
<head>
<title>局部类型转换器</title>
</head>
<body>
<formaction="abc.action"method="post">
<tablealign="center"width="360">
<caption><h3>局部类型转换器</h3></caption>
<tralign="center">
<td>用户信息的用户名和密码以英文逗号隔开</td>
</tr>
<tr>
<td>请输入用户信息:<inputtype="text"name="user"/></td>
</tr>
<tralign="center">
<td><inputtype="submit"value="转换"/><inputtype="reset"value="重填"/></td>
</tr>
</table>
</form>
</body>
</html>

welcome.jsp

<%@pagelanguage="java"contentType="text/html;charset=GBK"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<html>
<head>
<title>转换成功</title>
</head>
<body>
转换成功!<br>
用户名为:<s:propertyvalue="user.name"/><br>
密码为:<s:propertyvalue="user.pass"/><br>
</body>
</html>

error.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
</head>
<body>
不合法,无法转换.<br>
</body>
</html>

2)修改web.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

3)创建类:LoginAction.javaUser.javaUserConverter.java

packagejk;

importcom.opensymphony.xwork2.Action;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassLoginActionimplementsAction
{
privateUseruser;
privateStringtip;

publicvoidsetUser(Useruser)
{
this.user=user;
}

publicvoidsetTip(Stringtip)
{
this.tip=tip;
}

publicUsergetUser()
{
return(this.user);
}

publicStringgetTip()
{
return(this.tip);
}

publicStringexecute()throwsException
{
if(getUser().getName().equals("admin")
&&getUser().getPass().equals("123"))
{
setTip("转换成功");
returnSUCCESS;
}
else
{
setTip("转换失败");
returnERROR;
}
}
}
packagejk;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassUser
{
privateStringname;
privateStringpass;

publicvoidsetName(Stringname)
{
this.name=name;
}

publicvoidsetPass(Stringpass)
{
this.pass=pass;
}

publicStringgetName()
{
return(this.name);
}

publicStringgetPass()
{
return(this.pass);
}
}
packagejk;

importjava.util.Map;
importognl.DefaultTypeConverter;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassUserConverterextendsDefaultTypeConverter
{
publicObjectconvertValue(Mapcontext,Objectvalue,ClasstoType)
{
if(toType==User.class)
{
String[]params=(String[])value;
Useruser=newUser();
String[]userValues=params[0].split(",");
user.setName(userValues[0]);
user.setPass(userValues[1]);
returnuser;

}
elseif(toType==String.class)
{
Useruser=(User)value;
return"<"+user.getName()+","+user.getPass()+">";
}
returnnull;
}
}


4)创建LoginAction-conversion.properties

user=jk.UserConverter

5)编辑struts.xml文件

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<packagename="jk"extends="struts-default">

<actionname="abc"class="jk.LoginAction">

<resultname="success">/welcome.jsp</result>

<resultname="error">/error.jsp</result>

</action>

</package>

</struts>

--------------------------------------------------------------------------

全部类型转换器实现:

1)建3个jsp

index.jsp

<%@pagelanguage="java"contentType="text/html;charset=GBK"%>
<html>
<head>
<title>全局类型转换器</title>
</head>
<body>
<formaction="abc.action"method="post">
<tablealign="center"width="360">
<caption><h3>全局类型转换器</h3></caption>
<tralign="center">
<td>用户信息的用户名和密码以英文逗号隔开</td>
</tr>
<tr>
<td>请输入用户信息:<inputtype="text"name="user"/></td>
</tr>
<tr>
<td>请输入客人信息:<inputtype="text"name="customer"/></td>
</tr>
<tr>
<td>用户生日:<inputtype="text"name="birth"/></td>
</tr>
<tralign="center">
<td><inputtype="submit"value="转换"/><inputtype="reset"value="重填"/></td>
</tr>
</table>
</form>
</body>
</html>


welcome.jsp

<%@pagelanguage="java"contentType="text/html;charset=GBK"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<html>
<head>
<title>转换成功</title>
</head>
<body>
转换成功!<br>
用户的用户名为:<s:propertyvalue="user.name"/><br>
用户的密码为:<s:propertyvalue="user.pass"/><br>
用户的生日为:<s:propertyvalue="birth"/><br>
客人的用户名为:<s:propertyvalue="customer.name"/><br>
客人的密码为:<s:propertyvalue="customer.pass"/><br>
</body>
</html>


error.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
</head>
<body>
不合法,无法转换.<br>
</body>
</html>

2)修改web.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


3)创建类:LoginAction.javaUser.javaUserConverter.java

packagejk;

importcom.opensymphony.xwork2.Action;
importjava.util.Date;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassLoginActionimplementsAction
{
privateUseruser;
privateUsercustomer;
privateDatebirth;
privateStringtip;

publicvoidsetUser(Useruser)
{
this.user=user;
}

publicvoidsetCustomer(Usercustomer)
{
this.customer=customer;
}

publicvoidsetTip(Stringtip)
{
this.tip=tip;
}

publicvoidsetBirth(Dated)
{
this.birth=d;
}

publicUsergetUser()
{
return(this.user);
}

publicUsergetCustomer()
{
return(this.customer);
}

publicDategetBirth()
{
returnthis.birth;
}

publicStringgetTip()
{
return(this.tip);
}

publicStringexecute()throwsException
{
if(getUser().getName().equals("admin")
&&getUser().getPass().equals("123"))
{
setTip("转换成功");
returnSUCCESS;
}
else
{
setTip("转换失败");
returnERROR;
}
}
}
packagejk;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassUser
{
privateStringname;
privateStringpass;

publicvoidsetName(Stringname)
{
this.name=name;
}

publicvoidsetPass(Stringpass)
{
this.pass=pass;
}

publicStringgetName()
{
return(this.name);
}

publicStringgetPass()
{
return(this.pass);
}
}


packagejk;

importjava.util.Map;
importognl.DefaultTypeConverter;
importorg.apache.struts2.util.StrutsTypeConverter;
importjava.util.List;
importjava.util.ArrayList;

/**
*@authorlove_jk
*<br>Date:2014-02-15
*/

publicclassUserConverterextendsStrutsTypeConverter
{

publicObjectconvertFromString(Mapcontext,String[]values,ClasstoClass)
{
Useruser=newUser();
String[]userValues=values[0].split(",");
user.setName(userValues[0]);
user.setPass(userValues[1]);
returnuser;
}

@Override
publicStringconvertToString(Mapcontext,Objecto)
{
Useruser=(User)o;
return"<"+user.getName()+","+user.getPass()+">";

}

}


4)创建xwork-conversion.properties

jk.User=jk.UserConverter

5)编辑struts.xml文件

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<packagename="jk"extends="struts-default">

<actionname="abc"class="jk.LoginAction">
<resultname="success">/welcome.jsp</result>
<resultname="error">/error.jsp</result>
</action>
</package>
</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: