今天在做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中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...
本篇文章将深入探讨Struts2中的类型转换机制,包括常规类型转换、自定义类型转换以及错误处理。 首先,我们来看**常规类型转换**。Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、...
### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...
在描述中提到的博客链接(由于实际无法访问,以下内容基于Struts2类型转换器的通用知识)通常会详细解释如何创建和注册自定义类型转换器。开发者可以实现`org.apache.struts2.util.TypeConverter`接口或继承`org....
本练习主要关注如何在Struts2中实现自定义的数据类型转换,以满足特定业务需求。 首先,我们需要了解Struts2的数据转换机制。当用户提交表单数据时,Struts2会通过ActionContext获取到这些数据,并尝试将其转换为...
这就是"struts2自定义类型转换器"的主题。 首先,理解Struts2的类型转换机制。当Struts2接收到HTTP请求时,它会尝试将请求参数与Action类的属性进行绑定。这个过程涉及到了类型转换,Struts2内置了一套转换器机制,...
总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...
自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...
3. 在调用setter方法前,Struts2会检查该属性是否有自定义的类型转换器。如果存在,它会在Action同级目录下的`action名称-conversion.properties`文件中查找转换规则。若在`src`目录下的`-conversion.properties`...
自定义类型转换器是Struts 2的核心特性之一,允许开发者根据业务需求定制数据转换规则。以下将详细介绍如何创建、注册以及使用自定义类型转换器。 1. **创建自定义类型转换器** - 创建一个类,实现`org.apache....
在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...
2. **Struts2类型转换器** Struts2的核心组件`ValueStack`负责管理Action对象,并使用`ConversionService`接口处理类型转换。默认情况下,Struts2提供了一系列内置的转换器,可以处理基本数据类型和一些常见的Java...
本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...
在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...
Struts2是一个强大的MVC框架,它在处理用户请求时涉及到数据类型的转换,这在处理复杂的表单数据或者自定义对象时尤其重要。本篇文章将详细介绍如何在Struts2中进行配置与自定义类型转换。 首先,Struts2的配置主要...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括类型转换、拦截器和校验机制。本文将深入探讨这些关键知识点,并通过实际例子来帮助你理解它们的工作原理和应用。 首先,我们来看看**类型转换...
熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 实验环境与设备: 已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个...