今天在做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命令来将其转换成另一个属性文件,这样就更省事了。希望这些能够帮上那些跟我遇到一样问题的朋友们,也希望高手们不惜赐教一些高招。更好的解决这样的问题。
分享到:
相关推荐
对于Struts1和Struts2中都讲到了自定义类型转换器。但是有些人可能对自定义类型转换器的运行原理不理解,这里进行简单介绍一下……
Struts2自定义类型转换
struts2如何配置与自定义类型转换struts2如何配置与自定义类型转换
熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 实验环境与设备: 已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个...
struts 2.0 自定义类型转换器 注册类型转换器 入门实例 简单实例
适合struts2入门使用,主要是struts拦截到的数据类型转换的问题
struts2 自定义类型转换器,实现一个对象转换成一个int 坐标值。
NULL 博文链接:https://azrael6619.iteye.com/blog/415106
myeclipse平台下使用struts2.3框架搭建实例,理解struts2工作原理,了解struts2自定义类型转换,自定义拦截器,掌握struts2的mvc框架应用
传智播客struts2.1源代码_自定义类型转换器
Struts2的自动类型转换及自定义类型转换[文].pdf
Struts 自定义转换器Struts 自定义转换器
struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter struts5 增加集合类型,使用范型 ...
1、 理解Struts2的类型转换类型 2、 理解局部类型转换器与全局类型转换器的区别 3、 掌握Struts2的自定义类型转换 4、 理解OGNL表达式语言
Struts2自定义类型转换器 如果用户登陆后,可以访问Action中的所有方法,如果用户没有登陆,不允许访问Action中的方法。并且提示你没有权限执行该操作!
对于基本数据类型 strus2可以自动的将其转换成所需要的类型,但是我们自己定义的引用数据类型无法转换,本文详细介绍了strus2的自定义类型转换器
Struts的自定义转换器 public class LineConvertor extends StrutsTypeConverter{...}
之前发布struts2的转换,只是利用struts2内部类实现,这个是自定义的转换类,不是很难,很容易理解
类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行...下面这篇文章主要给大家介绍了关于Struts2学习教程之自定义类型转换器的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下