我的Struts 技巧集

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

前言:为了解决开发struts应用中出现的问题,特开设此Struts 技巧集。2004年6月30日周咸立

1.对bean:write输出的数据进行格式化

在我们的struts应用中,如果bean:write输出的是很大的Double数据的话,默认情况下它会用科学计数化表示 如 1.316E8等。

我们需要将他进行格式化,如千分位格式化等。即输出为13,160,000.00。

如果是个别现象,我们用bean:write的format属性处理,即format="0,000.00"

如果是普遍现象,我们可以在资源文件(在struts-config.xml的message-resources节点配置)里设置org.apache.struts.taglib.bean.format.float=0,000.00 ,当然实际处理时format属性是优先的。也就是说,如果format属性存在,bean:write将用format属性值进行格式化,否则用默认的org.apache.struts.taglib.bean.format.float的值格式化。

此类格式化参数有:

?

序号

格式化参数

适用类型

1

org.apache.struts.taglib.bean.format.sql.timestamp

java.sql.Timestamp

2

org.apache.struts.taglib.bean.format.sql.date

java.sql.Date

3

org.apache.struts.taglib.bean.format.sql.time

java.sql.Time

4

org.apache.struts.taglib.bean.format.date

java.util.Date

5

org.apache.struts.taglib.bean.format.int

Byte,Short,Integer,Long,BigInteger

6

org.apache.struts.taglib.bean.format.float

Float,Double,BigDecimal

2.处理输入类型

以日期为例,其他类型同理

struts使用日期包括将string自动转化为日期fill到form中的解决方法:

创建如下类:

import java.util.*;

import org.apache.commons.beanutils.*;

import java.text.SimpleDateFormat;

public class DateConvert implements Converter {

static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

public DateConvert() {

}

public Object convert(Class type, Object value) {

if (value == null) {

return null;

}

if (((String) value).trim().length() == 0)

return null;

if (value instanceof String) {

try {

return df.parse((String) value);

} catch (Exception ex) {

throw new ConversionException("输入的日期类型不合乎yyyy-MM-dd"

+ value.getClass());

}

} else {

throw new ConversionException("输入的不是字符类型" + value.getClass());

}

}

}

然后在你的系统初始化的地方使用如下语句初始化(如web的init方法)

ConvertUtils.register(new DateConvert(),java.util.Date.class);

参数用于表示DateConvert类负责处理java.util.Date类型的转化

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航