`
夜之son
  • 浏览: 25819 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

struts2类型转换自定义

阅读更多

今天在做struts2的类型转换时出了一些问题,主要是想使用中文来替代框架的那种类型转换错误时的信息。

先来看看struts.xml文件:

 

<?xml version="1.0" encoding="GB18030"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="TestLei" extends="struts-default">
	<action name="zhuce" class="zq.Regis">
	<result name="success">/index.jsp</result>
	<result name="input">/regis.jsp</result>
	</action>
	</package>
</struts>
 

 

其次是一个简单的输入页面regis.jsp

 

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<h1>忧郁的分割线</h1>
<hr/>
<s:form action="zhuce">
<s:textfield name="name" label="姓名"></s:textfield>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="height" label="身高"></s:textfield>
<s:submit label="提交"></s:submit>
</s:form>
<s:debug></s:debug>
</body>
</html>

 

 接下来是一个简单的action

 

package zq;

import com.opensymphony.xwork2.ActionSupport;

public class Regis extends ActionSupport {
	private String name;
	private int age;
	private int height;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
	@Override
	public String execute() throws Exception {
		return "success";
	}
	
}

 

 这就是实验的主要内容,起初我在regis.jsp中输入正确的内容,当然会通过action转到index.jsp中,后来在age与height中输入了字符串后,提示了如下内容:

Invalid field value for field "age"

Invalid field value for field "height"

,这样的提示看到很让人难过,我就写了个Regis.properties文件来解决这个问题,内容如下:

 

invalid.fieldvalue.name=请输入字母
invalid.fieldvalue.age=请输入数字
invalid.fieldvalue.height=请输入数字

 

 看到网上的可以,希望着这样可以解决,可是很不幸。这段代码在保存的时候就过不去,我的页面编码位中文(gb18030),提示着中文在这个文件下不能保存。即使保存了,视图中显示的也是乱码,这样就没有达到预期的效果,后来在网上看到有人说可以使用native2ascii命令来改变文件的编码方式,后来我在dos下使用该命令来转码,可惜也失败了,在保存的时候就是乱码,就没有成功。后来静下来看看有人说可以单独来使用该命令,我是使用将Regis.properties文件的内容保存到一个1.txt文件中,然后使用这个命令:

native2ascii -encoding gbk 1.txt 2.txt

然后将2.txt文件打开,看到的那内容如下:

 

invalid.fieldvalue.name=\u8bf7\u8f93\u5165\u5b57\u6bcd
invalid.fieldvalue.age=\u8bf7\u8f93\u5165\u5b57\u6bcd
invalid.fieldvalue.height=\u8bf7\u8f93\u5165\u5b57\u6bcd

 然后将2.txt文件改名为Regis_zh_CN.properties,并将该文件拷到与Regis.java同一个目录下,即zq目录下,然后在运行,想要的结果出现了,

 

 

Invalid field value for field "age"

Invalid field value for field "height"

在视图中换成了:

 

请输入数字

请输入数字

忙活了一段终于有些收获了,我想到既然不能在myeclipse中保存,那么就可以将这个文件拿走,然后使用native2ascii命令来将其转换成另一个属性文件,这样就更省事了。希望这些能够帮上那些跟我遇到一样问题的朋友们,也希望高手们不惜赐教一些高招。更好的解决这样的问题。

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics