no17-第12章第二次课-多视图解析器-自定义数据格式转换器-自定义数据编辑器-ssm整合

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: ssm 专栏: ssm框架课 标签: 多视图解析器 自定义数据格式转换 自定义编辑器 ssm整合

2023-01-12 09:31:10 761浏览

多视图解析器,自定义数据格式转换,自定义编辑器,ssm整合

1.多视图解析器

场景:后端java提供接口给不同的终端使用,比如移动端需要json格式的,假设平板又要xml格式的话,难道我们要写很多重复的接口代码吗?

这里提供一个简便方法:引入以下jar包即可

2.自定义数据转换器

1.编写自定义类型转换器,就是之前的那个保存用户的时候有一个属性是date类型,之前的解决方法是@DateTimeFormat(pattern = "yyyy-MM-DD"),下面用全局的方式解决

package cn.cvs.web.converter;

import org.apache.log4j.Logger;
import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 自定义的字符串转日期转换器
 */
public class String2DateConverter implements Converter<String, Date> {
	private Logger logger = org.apache.log4j.Logger.getLogger(String2DateConverter.class);

	private String datePattern;

	/**
	 * 一个日期格式参数的构造函数
	 * @param datePattern 日期格式
	 */
	public String2DateConverter(String datePattern){
		logger.info("加载String2DateConverter");
		this.datePattern = datePattern;
	}

	/**
	 * 具体的字符串转日期功能方法
	 * @param s
	 * @return
	 */
	@Override
	public Date convert(String s) {
		Date date = null;
		try {
			date =  new SimpleDateFormat(datePattern).parse(s);
			logger.info("String2DateConverter convert date:" + date);
		} catch (ParseException e) {
			logger.error("日期转换失败:" + s );
			e.printStackTrace();
		}
		return date;
	}
}
	<mvc:annotation-driven conversion-service="myConversionService"
			content-negotiation-manager="contentNegotiationManager">



    <bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
		<property name="converters">
			<list>
				<bean class="cn.cvs.web.converter.String2DateConverter">
					<constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
				</bean>
			</list>
		</property>
	</bean>


3.装配自定义编辑器

public class BaseController {
	private Logger logger = Logger.getLogger(BaseController.class);
	/**
	 * 使用@InitBinder解决SpringMVC日期类型无法绑定的问题
	 * @param dataBinder
	 */
	@InitBinder
	public void initBinder(WebDataBinder dataBinder){
		logger.info("进入BaseController的initBinder方法");
		dataBinder.registerCustomEditor(Date.class, 
				new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
	}
}

用到的control继承一下就OK了


4.ssm整合

这个看下一篇文章

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695