Spring MVC 自动为对象注入枚举类型
原文地址:http://1358440610-qq-com.iteye.com/blog/2079048
如果一个对象里面有枚举类型的话,则Spring MVC是不能够直接进行注入的,因为它只实现了一些基本的数据类型的自动转换注入,但是其也提供了可扩展的接口,可以根据自己的需要来进行扩展。下面是一个示例:
首先:这是一个枚举类:
- /**
- * 新闻类别
- * @author: ShangJianguo
- * 2014-6-11 上午10:51:07
- */
- public enum ENews {
- company("0"), // 企业新闻
- industry("1");// 行业新闻
- private final String value;
- private ENews(String v) {
- this.value = v;
- }
- public String toString() {
- return this.value;
- }
- public static ENews get(int v) {
- String str = String.valueOf(v);
- return get(str);
- }
- public static ENews get(String str) {
- for (ENews e : values()) {
- if(e.toString().equals(str)) {
- return e;
- }
- }
- return null;
- }
- }
下面是个实体类:
- public class News {
- private ENews type;
- private String adminuid;
- private String title;
- private String summary;
- private String author;
- private String origin;
- private String originurl;
- private String content;
- // 省略setter和getter方法
- }
这里是controller层:
- @RequestMapping(value="/news/update", method=RequestMethod.POST)
- @ResponseBody
- public boolean edit_update(Map<String, Object> model,HttpServletRequest request,News news){
- String adminid = getAdminid();
- news.init(adminSO.getAdminByAdminid(adminid).getUid());
- if (news != null) {
- if (newsSO.update(news)) {
- return true;
- }
- }
- return false;
- }
但是,到了这里程序还不能够正常的运行,真正的要点在下面,写一个枚举的转换类(Converter):
- public class StringToENewsConverter implements Converter<String, ENews>{
- /* (non-Javadoc)
- * @see com.fasterxml.jackson.databind.util.Converter#convert(java.lang.Object)
- * @author: ShangJianguo
- * 2014-6-12 下午4:56:30
- */
- @Override
- public ENews convert(String source) {
- String value = source.trim();
- if ("".equals(value)) {
- return null;
- }
- return ENews.get(Integer.parseInt(source));
- }
- }
然后在spring mvc的配置文件中进行配置:
- <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <property name="converters">
- <set>
- <bean class="com.ngenius.core.converters.StringToENewsConverter" />
- </set>
- </property>
- </bean>
这样spring在进行对对象的字段进行注入的时候就可以运行了,直接把前端接收来的内容转换为ENews类型,进行封装。
Spring MVC 自动为对象注入枚举类型的更多相关文章
- Spring MVC自动为对象注入枚举数据
一.实现转换工厂,定义转换实现,如下: package com.mafwo; import org.springframework.core.convert.converter.Convert ...
- Spring MVC通过Pageable对象和PageableDefault注解获取分页信息(MongoDB通过Pageable来操作分页)
说明:Pageable同时也能用于操作MongoDB的分页. PageableSpring Data库中定义的一个接口,该接口是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息( ...
- Spring:所有依赖项注入的类型
一.前言 Spring文档严格只定义了两种类型的注入:构造函数注入和setter注入.但是,还有更多的方式来注入依赖项,例如字段注入,查找方法注入.下面主要是讲使用Spring框架时可能发生的类型. ...
- JAVA高级特性--自动拆箱-装箱,枚举类型
基本数据类型转换为引用类型对象 一个自动装箱的例子 Integer i=10; 相当于 Integer i=new Integer(10); 一个自动拆箱的例子 Integer m=10; int n ...
- hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题
引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") ...
- hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败
在使用spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") @Resp ...
- Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
1.前言 对于Long 类型的数据,如果我们在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度 ...
- Spring MVC 属性文件读取注入到静态字段
目录(?)[-] servlet-contextxml configproperties 示例属性 ConfigInfo 对应的配置bean 使用 在项目中,有些参数需要配置到属性文件xxx.pr ...
- spring mvc中,直接注入的HttpServletRequst是否安全呢?
看似很简单的一个问题,借此追踪下spring的源码处理 在写springMVC的Control中有很多这种代码, 如需要获取request对象去做某些事情 如: @Controller @Reques ...
随机推荐
- 解决jquery库和base库的冲突
jquery库引用在base库之前,$的所有权就是base库的:而jquery库引用在base库之前后的话,$的所有权就是jquery库的.解决这种库之间的冲突可用以下方法解决: 情况一,jquery ...
- 2017《JAVA技术》预备作业2-计科1502-19-何俏依
Git学习笔记 1.安装git并验证安装成功 2.注册码云账号并配置git 3.创建ssh key并在码云上添加公钥,验证公钥添加成功 添加公钥的过程中,出现了一些问题,未找到文件,经过老师的指点,仔 ...
- 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener
=================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...
- GitHub命令更新
github命令 1.git clone url 从远程master拉代码 2.进入目录 3.拉下来之后,git branch,查看本地分支是否为master,不是的话git checkout mas ...
- day 41 标准文档流 浮动
一.标准文档流 什么是标准文档流 宏观的将,我们的web页面和ps等设计软件有本质的区别,web 网页的制作,是个“流”,从上而下 ,像 “织毛衣”.而设计软件 ,想往哪里画东西,就去哪里画 标准文档 ...
- bootstrap modal 点击头部移动
$(".modal").each(function(){ $(this).draggable({ handle: ".modal-header" // 只能点击 ...
- [转]Java泛型
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...
- googletest--Death Test和Exception Test
Death Test验证某个状态会使进程以某个错误码和错误消息离开 #include <gtest\gtest.h> #include "MyStack.h" // D ...
- VS2017调试出现异常浏览器直接关闭的解决办法
最近升级完VS2017后,出现了各种不适应. 1.F5调试时总是会打开新的浏览器,过去都是在现有窗口右侧打开新的新的浏览器标签页. 这一点就让很不爽,勉强接受吧,继续调试代码但是还有第二种情况. 2. ...
- C语言 链表(VS2012版)
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> ...