`
esffor
  • 浏览: 1372242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

实现目标:从页面上输入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

 



分享到:
评论

相关推荐

    WebWork2开发指南-程序设计

    同时,框架内建了类型转换机制,能自动将字符串转换为各种Java类型,如日期、数字等。 四、结果类型与视图解析 WebWork2支持多种结果类型,包括转发、重定向、流结果等,使得控制流的管理更加灵活。它还集成了...

    freemark开发指南(入门)

    - **自定义Transforms**:自定义转换器,可以改变模板中表达式的输出行为。 了解以上基础知识后,开发者可以更有效地使用Freemarker构建动态网页。需要注意的是,Freemarker的灵活性和强大功能使得它成为Web开发中...

    FreeMarker开发指南

    - **自定义Transforms**: 自定义转换器可以改变变量的输出形式。 理解并熟练运用这些FreeMarker概念和指令,能够帮助开发者更高效地构建模板,实现动态内容的生成。FreeMarker的灵活性和强大功能使其成为Java Web...

    freemarker 学习手册

    4. 数据类型转换:Freemarker能自动进行类型转换,如字符串转数字、日期等。 5. 缓存机制:Freemarker支持缓存编译后的模板,提高性能。 五、最佳实践与注意事项 1. 将模板与业务代码分离,保持模板简洁易读。 2. ...

    springMVC学习

    本指南提供了 SpringMVC 的核心思想、框架特点、入门示例、参数传递、标签介绍、拦截器、类型转换、JSON 格式数据的输入和输出、文件上传、国际化和本地化、验证等方面的知识点,旨在帮助开发者快速掌握 SpringMVC ...

    freemarker(语法+实例)

    - **自定义Transforms**:自定义模板转换器,改变输出结果。 这些是Freemarker的基础和进阶知识点,涵盖了从基础语法到实际应用的多个方面。通过学习和理解这些内容,开发者能够更好地利用Freemarker来构建动态...

    freemark开发指南

    - **自定义Transforms**:定义自定义的转换器,改变模板输出的格式。 学习Freemarker,不仅需要理解这些基本概念和指令,还要通过实践来熟练运用。在实际开发中,可以利用Freemarker的强大灵活性和简洁性,构建...

    java freemarker学习文档

    - **自定义Transforms**:自定义转换器以改变输出内容。 在实际开发中,理解并熟练运用这些知识点可以大大提高Freemarker模板的编写效率和代码质量。同时,配合良好的编程实践和模板设计模式,可以进一步提升Web...

    freemarker语法 亲自收集整理

    - **自定义Transforms**:自定义数据转换器,改变输出格式。 总之,Freemarker提供了一套强大的模板语言,能够灵活地处理数据并生成动态内容。了解并熟练掌握这些语法和方法,对于高效地开发Java Web应用至关重要...

    struts2中文版参考书

    - **利用数据转换**:使用内置的数据转换器来处理输入数据。 - **利用列表数据项支持**:对于列表数据的操作提供更好的支持。 - **在Action中暴露领域模型**:将业务逻辑和数据模型紧密结合起来。 - **声明式验证**...

    freemarker总结

    2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...

    Practical Quick Start with Acegi Security

    - **过滤器到Bean代理**:支持过滤器到Bean代理的转换。 - **标签库**:提供了针对JSP和Velocity的标签库。 - **示例应用**:提供了“教程”样本应用和“联系人”应用等示例项目来展示如何使用Acegi安全框架。 - **...

Global site tag (gtag.js) - Google Analytics