详解Spring MVC自动为对象注入枚举类型
发布时间 - 2026-01-11 00:47:51 点击率:次如果一个对象里面有枚举类型的话,则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
# 注入枚举
# 枚举参数
# springmvc
# 枚举
# Spring成员对象注入的三种方式详解
# 解决netty中spring对象注入失败的问题
# springboot2.x解决运行顺序及Bean对象注入顺序的问题
# spring中对象注入的三种实现方式
# 自己的
# 是一个
# 是个
# 还不
# 这是一个
# 可以根据
# 转换为
# 不能够
# 配置文件
# 它只
# 大家多多
# 就可以
# 实现了
# 上午
# 下午
# 实体类
# null
# News
# valueOf
# str
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
jquery插件bootstrapValidator表单验证详解
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Android自定义控件实现温度旋转按钮效果
详解Huffman编码算法之Java实现
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
如何注册花生壳免费域名并搭建个人网站?
如何快速搭建自助建站会员专属系统?
Laravel如何使用.env文件管理环境变量?(最佳实践)
公司门户网站制作流程,华为官网怎么做?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何快速上传建站程序避免常见错误?
如何在建站之星绑定自定义域名?
Laravel怎么清理缓存_Laravel optimize clear命令详解
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
HTML 中动态设置元素 name 属性的正确语法详解
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
如何快速搭建FTP站点实现文件共享?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
JS去除重复并统计数量的实现方法
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Bootstrap整体框架之CSS12栅格系统
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
个人摄影网站制作流程,摄影爱好者都去什么网站?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
如何在云主机上快速搭建多站点网站?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何在Windows服务器上快速搭建网站?
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel如何处理表单验证?(Requests代码示例)
如何在万网开始建站?分步指南解析
利用python获取某年中每个月的第一天和最后一天
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何在宝塔面板中创建新站点?
JS经典正则表达式笔试题汇总
黑客如何利用漏洞与弱口令入侵网站服务器?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】

