前言:为了解决开发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类型的转化
  
 
  |