您的位置:首页 > 其它

Webwork实现自定义数字类型转换器

2007-05-10 20:54 369 查看
实现目标:从页面上输入123456.789,页面回显成金额格式:123,456.789

JavaBean:




package ch12;






public class User ...{


private Double salary;






public Double getSalary() ...{


return salary;


}






public void setSalary(Double salary) ...{


this.salary = salary;


}






}





Action:




package ch12;




import java.util.ArrayList;


import java.util.HashMap;


import java.util.Iterator;


import java.util.List;


import java.util.Map;




import com.opensymphony.xwork.ActionSupport;






public class TestConvert extends ActionSupport ...{




private User user;










public User getUser() ...{


return user;


}




public void setUser(User user) ...{


this.user = user;


}




public String execute() throws Exception ...{


return SUCCESS;


}

















}





xwork.xml




<action name="testConvert" class="ch12.TestConvert">


<result name="success">/ch12/TestConvert.jsp</result>


</action>



自定义转化器:最重要的

这个转换器是对类定义的,为类的属性定义转换器,所以,命名方式为:ClassName-conversion.properties

内容为:salary=ch12.SalaryConvert 表示User类的salary属性使用ch12.SalaryConvert 这个类进行转换



需要注意的时,如果是页面输入和页面输出双向都用到salary属性,需要判断cls的类型,定义相应的转换规则

见代码注释


package ch12;




import java.text.DecimalFormat;


import java.util.Map;




import ognl.DefaultTypeConverter;






public class SalaryConvert extends DefaultTypeConverter ...{




public Object convertValue(Map map, Object obj, Class cls) ...{




if(cls==String.class)...{ //从action显示数据到页面


DecimalFormat fmt = new DecimalFormat("##,###,###,###,##0.00");


return fmt.format((Double)obj);




}else if(cls==Double.class)...{ //从页面提交到action


return new Double(((String[])obj)[0]);


}


return null;













}


}



如果是从action到jsp,则进行数字格式转换

如果是从jsp到action,则把输入的String转换成Double,因为User类的salary属性是Double类型

运行jsp,输入123456.789,提交,页面显示结果为123,456.789
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: