- 浏览: 948837 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
在2009年,Spring Framework 3.0发布了,带来了很多新的功能强大的特性。 除了支持RESTful Web service的Spring Expression Language(SpEL)等主要功能外,还有一些很方便的,而且不需要太多时间学习的新的特性。这里我们介绍其中的一个:用于格式化的注解。
简介
Spring 3 提供了两个可以用于格式化数字、日期和时间的注解@NumberFormat和@DateTimeFormat,这两个标签可以用于bean的属性或方法参数上。@NumberFormat可以用来格式化任何的数字的基本类型(如int,long)或java.lang.Number的实例(如 BigDecimal, Integer)。@DateTimeFormat可以用来格式化java.util.Date、java.util.Calendar和 java.util.Long类型,也可以用于Joda Time类型的字段或参数。(Joda Time是一个开源的包,提供了对date和time类的一些替代类)。
要指定数字或日期/时间类型的属性,只需要在其上添加 @NumberFormat或@DateTimeFormat注解接可以了。例如下面的代码:
import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import org.joda.time.LocalTime; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.NumberFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; import org.springframework.format.annotation.NumberFormat.Style; public class Employee { private String name; /** * numeric fields using @NumberFormat annotation for formatting. */ @NumberFormat(style = Style.CURRENCY) private double salary; @NumberFormat(style = Style.PERCENT) private double w4AdditionalWithdraw; @NumberFormat private int dependents; @NumberFormat(pattern = "0.00") private BigDecimal visualAcuity; /** * date and time fields using @DateTimeFormat annotation for formatting. */ @DateTimeFormat(style = "M-") private Date birthDate; @DateTimeFormat(pattern = "w:yyyy") private Calendar hireDate; @DateTimeFormat(style = "-S") private LocalTime startTime; @DateTimeFormat(iso = ISO.DATE_TIME) private long lastTimeEntry; /** * initialization block to provide sample data for display */ { this.name = "John Doe"; this.salary = 30100.50; this.w4AdditionalWithdraw = 0.02; this.dependents = 5; this.visualAcuity = new BigDecimal(".1"); Calendar dob = Calendar.getInstance(); dob.set(1964, Calendar.AUGUST, 30); this.birthDate = dob.getTime(); this.hireDate = Calendar.getInstance(); this.startTime = new LocalTime(8, 0); this.lastTimeEntry = (new Date()).getTime() - 10000; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public double getW4AdditionalWithdraw() { return w4AdditionalWithdraw; } public void setW4AdditionalWithdraw(double w4AdditionalWithdraw) { this.w4AdditionalWithdraw = w4AdditionalWithdraw; } public int getDependents() { return dependents; } public void setDependents(int dependents) { this.dependents = dependents; } public BigDecimal getVisualAcuity() { return visualAcuity; } public void setVisualAcuity(BigDecimal visualAcuity) { this.visualAcuity = visualAcuity; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public LocalTime getStartTime() { return startTime; } public void setStartTime(LocalTime startTime) { this.startTime = startTime; } public Calendar getHireDate() { return hireDate; } public void setHireDate(Calendar hireDate) { this.hireDate = hireDate; } public long getLastTimeEntry() { return lastTimeEntry; } public void setLastTimeEntry(long lastTimeEntry) { this.lastTimeEntry = lastTimeEntry; } }
注解的可选属性
注解的属性决定了@NumberFormat和@DateTimeFormat注解怎样格式化相应的属性。 @NumberFormat注解有两个可选的属性:style和pattern。style属性是一个NumberFormat.Style枚举值,可以是以下的三个值之一:
NumberFormat.Style 枚举值 |
是否缺省值 |
NUMBER | 是 |
CURRENCY | 否 |
PERCENT | 否 |
这 3种style的应用我们在上面的代码中都有相应的例子。
具体的style的表现形式是与区域相关的。例如,一个double类型的字段,如果style是CURRENCY,那么在en-us的区域显示的时候前面会加上$,在zh-cn的区域显示的时候前面会加上¥。
如果以上的3中方式无法满足需求,我们可以使用pattern属性来指定特殊的输出格式。Pattern的值要遵循Java标准的numeric formatting pattern。对于@NumberFormat来说缺省的是没有pattern的。
@DateTimeFormat 注解有3个可选的属性:style,pattern和iso。属性style允许我们使用两个字符的字符串来表明怎样格式化日期和时间。第一个字符表明了日期的格式,第二个字符表明了时间的格式。下面的表格中列出了可用的选择以及相应的输出的例子:
描述 | 字符串值 | 示例输出 |
短格式(这是缺省值) | SS |
8/30/64 11:24 AM |
中等格式 | MM | Aug 30, 1964 11:24:41 AM |
长格式 | LL |
August 30, 1964 11:24:41 AM CDT |
完整格式 | FF | Sunday, August 30, 1964 11:24:41 AM CDT |
使用短横线省略日期或时间 | M- | Aug 30, 1964 |
Pattern 属性允许我们使用自定义的日期/时间格式。该属性的值遵循java标准的date/time格式规范。缺省的该属性的值为空,也就是不进行特殊的格式化。
最后,可以使用org.springframework.format.annotation.DateTimeFormat.ISO枚举值来使用ISO标准的日期/时间格式来格式化。下面的表格中列出了可能的值和相应的输出
ISO枚举值 |
输出 |
DATE | 2000-10-31 |
TIME | 01:30:00.000-05:00(最后的是时区) |
DATE_TIME | 2000-10-31 01:30:00.000-05:00. |
NONE | 不进行ISO标准的格式化 |
使用格式化注解的设置
要使用上面介绍的格式化注解,需要进行如下的配置:
1.下载Spring 3.0的jar包并加入到类路径中。
2. 将下面的配置信息加入到spring bean的XML配置文件中。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <mvc:annotation-driven /> </beans>
解析参数
我们也可以使用这些注解来告诉Spring怎样解析输入的数据。下面的例子显示了怎样使用@DateTimeFormat来解析以ISO格式输入的时间信息:
public String getEmployeesOnTheClock(@DateTimeFormat(iso=ISO.TIME) java.util.Date time) { ... }
评论
http://www.developer.com/java/web/article.php/3879471/Spring-Framework-30-and-Annotation-driven-Formatting.htm
发表评论
-
各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
2013-07-16 13:09 2827在开发基于数据库的应 ... -
springmvc rest框架搭建中遇到的问题-xml转换错误
2013-01-18 11:26 2005.bean to xml显示的xml不是我往Model ... -
spring3.5 mvc json view bug MappingJacksonJsonView
2013-01-18 11:27 1541在返回单一model的json的时候。 MappingJa ... -
Spring MVC的多视图解析器配置及与Freemarker的集成
2013-01-18 11:27 3684http://my249645546.iteye.com/ ... -
xStream完美转换XML、JSON
2013-01-17 16:02 1257http://www.cnblogs.com/hoojo/a ... -
SpringMVC 中整合JSON、XML视图一
2013-01-17 16:01 1373http://www.cnblogs.com/hoojo/a ... -
Spring MVC 之 视图解析器ResourceBundleViewResolver
2013-01-17 10:45 1278http://blog.csdn.net/q34982 ... -
spring3mvc自定义多视图解析器
2013-01-17 10:41 1664使用视图名后缀来判断选择相应的视图解析器自定义一个视图解析器 ... -
spring3.0.6 使用context:property-placeholder载不进属性
2012-12-15 14:43 1378我用spring3.0.6+mybatis3.0.6+myba ... -
Spring定时任务的多种使用方法总结
2012-10-18 09:48 1731这里使用的是Spring2.5,需要的jar包:spring. ... -
Spring3.0 + 自定义注解实现操作日志记录功能
2012-03-12 09:34 1493最近项目组长分配给我一个任务,让我完成一个操作日志的管理功能。 ... -
spring mvc例子
2012-03-11 11:35 2074使用拦截器 和Struts2一样,Spring MVC也可以 ... -
在 Spring Bean 內取得 HttpServletRequest
2011-10-11 16:13 1228使用 Java 去開發 Web 應用程式時,大部份時候都會使用 ... -
spring3+freemark自定义标签
2011-10-09 18:27 2753<bean id="viewResolver& ... -
OpenSessionInViewFilter作用及配置
2011-06-15 10:31 1335摘自:http://www.yybean.com/opense ... -
spring httpinvoke 例子
2011-04-21 17:15 1205http://ajava.org/course/open/11 ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2011-04-02 23:38 2343本文将构建一个普通工程来说明spring注解缓存的使用方式,关 ... -
使用 ActiveMQ 示例
2011-03-30 17:38 1366企业中各项目中相互协作的时候可能用得到消息通知机制。比如有 ... -
使用Spring HTTP invoker进行远程调用
2011-03-30 10:34 1695使用Spring HTTP invoker进行远程调用Spri ... -
Java Spring2.5 Remote Invoke HTTP Invoker远程调用
2011-03-30 08:42 1972近日,一个项目涉及到系统间接口调用,考虑到系统间用的都是j ...
相关推荐
* 国际化支持:Annotation 验证支持国际化,可以根据不同的语言环境进行验证。 六、结论 Spring MVC Annotation 验证是一种简洁、灵活、高效的验证方法。它可以帮助我们快速实现数据验证,提高开发效率。本文详细...
12. **@InitBinder**: 这个注解可以用于初始化数据绑定行为,例如设置日期格式或忽略某些字段。 13. **@Async**: 如果你需要异步处理请求,可以使用这个注解标记方法,Spring将会以非阻塞方式调用该方法。 以上...
总的来说,通过结合使用Spring和Hibernate的注解,开发者可以创建出简洁、模块化的Java应用,减少繁琐的配置,提升开发效率。这个"springAndHibernateAnnotation"项目提供了一个很好的学习平台,新手可以通过实践...
`MappingJackson2HttpMessageConverter`是Spring MVC中用于处理JSON数据的典型转换器。这个转换器依赖于Jackson库,能够将Java对象转换为JSON字符串,以及将JSON字符串解析为Java对象。在配置文件中,我们需要声明这...
在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...
在Spring Boot中处理JSON数据的时间格式化是一个常见的需求,尤其是当后端需要与前端或其他服务通过JSON格式交换日期时间数据时。为了满足不同场景下对时间格式的要求,开发者可以使用Jackson库提供的注解来解决这一...
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在应用程序中安排周期性...通过合理配置和使用,我们可以轻松地将定时任务集成到Spring Boot应用中,实现自动化的工作流。
Java开发中,`jar`包是Java Archive的缩写,是一种可执行的文件格式,用于封装Java类库,包括`.class`文件和其他资源。在本例中,我们关注的`jar`包是`javax.annotation.zip`,它包含了`javax.annotation`相关的API...
运行时处理则是JVM在运行时读取注解并采取行动,例如Spring框架中的依赖注入就是通过运行时注解处理实现的。 `annotation-1.4.14.jar`这个库可能包含了自定义注解的实现以及对应的处理器,使得开发者能够扩展Java...
表达式语言(Expression Language)是Spring MVC中用于访问数据和处理逻辑的工具,它提供了一种机制,允许在XML配置和视图模板中使用表达式来获取数据。表达式语言的运用,使得页面渲染更加动态和灵活。 本书适合...
在Spring MVC中,数据格式化是处理数据展示和输入的重要环节。`Converter` 和 `Formatter` 是Spring MVC提供的两种工具,它们允许我们自定义类型转换,以满足特定的数据格式要求。 `Converter` 是用于在任何 `...
此外,它还包含了对数据绑定、验证、格式化等功能的支持。 例如,当我们在一个类上使用`@RestController`注解时,Spring MVC会自动识别这个类为RESTful服务的控制器,并处理其中的方法。方法上的`@RequestMapping`...
Spring框架中的注解支持AOP,如@Transactional,用于声明式事务管理。 六、实际应用案例 6.1 Spring框架 Spring的@Component、@Service、@Repository 和 @Controller 等注解用于组件扫描,实现依赖注入。 6.2 JPA...
然后,在Spring的配置文件中,我们可以通过`<mvc:annotation-driven>`标签启用HTTP消息转换器支持,这样Spring MVC会自动处理JSON的序列化和反序列化。 3. **模型绑定和JSON输入** 当前端向后端发送JSON数据时,...
例如,`beans.xsd`包含了Spring配置的基本元素,如`<bean>`、`<property>`等,用于定义bean的实例化、属性设置以及依赖关系。 其次,`context.xsd`扩展了`beans.xsd`,提供了更多上下文相关的配置,如`...
首先,让我们了解Spring中用于日志管理的主要注解。Spring本身并不直接提供日志注解,但我们可以结合Spring与其他流行的日志库,如Log4j2、SLF4J(Simple Logging Facade for Java)和Logback,来实现基于注解的日志...
与之配套的是Jackson库,这是一款高效的JSON处理库,常用于Spring MVC应用中进行数据序列化和反序列化。 在使用Spring Framework 4.3.8时,确保你的Java Development Kit (JDK)版本至少是1.8。这是由于Spring框架4....
Spring配置文件是XML格式的文件,用于定义对象及其依赖关系,通过配置文件,Spring IoC容器可以管理这些对象的生命周期。 7、Spring应用程序有哪些不同组件? Spring应用程序的组件主要包括: - Beans:在Spring ...
4. **数据转换和格式化**:`<mvc:annotation-driven/>`还会自动注册一些数据转换器和服务,如`StringToXXXConverter`,用于将请求参数转换为合适的对象类型。同时,它也支持自定义转换器和格式化器,以便处理特定的...
在Spring的bean中,我们可以使用`@PostConstruct`和`@PreDestroy`注解来标记初始化和销毁方法,同时在这些方法中插入Log4j的日志记录,以便追踪bean的生命周期。例如: ```java @Service public class MyService { ...