引自:http://www.35dx.com/html/java/8/java7727.html
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類型的轉化