Springmvc中对日期类型的属性转换问题和自定义的参数解析器

来源:互联网 发布:淘宝购买魔术道具 编辑:程序博客网 时间:2024/04/28 19:10

springmvc属性编辑器:
这里写图片描述

对于日期类型的属性转换通过注入属性编辑器。

可以在action类中通过@Binder注解注册属性编辑器。

通过自定义属性编辑类方法,定义属性编辑器。

这里写图片描述
定义方法:
需要实现implements Converter<String, java.util.Date>
String就是原始类型
java.util.Date就是目标类型

目标:
将页面输入的开始采购时间cjtime_start(原始类型),向YycgdCustom类中java.util.Datecjtime_start属性(目标类型)赋值,需要将原始类型字符类型转成日期java.util.Date。

注意 :属性编辑器中目标类型和对象中属性类型一致。

接口方法:
public Date convert(String source) {

如果原始类型转换目标类型成功,通过return 向对象的属性赋值。
如果原始类型转换目标类型不成功,通过return 向对象的属性赋值为null.

日期类型转换的属性编辑器:

public class DateConverter implements Converter<String, Date> {    public Date convert(String source) {        if(source != null){//如果从浏览器传入字符串不等于开始转换            source = source.trim();//去除前后空格            if(source.equals("")){                 source = null;            }            if(source!=null){//去除空格后不为空则开始转换                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");                try {                    return simpleDateFormat.parse(source);                } catch (ParseException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                    return null;                }            }        }        return null;    }}

配置属性编辑器:
在springmvc.xml中配置:

<!-- 注解驱动 -->    <mvc:annotation-driven conversion-service="conversionService">    </mvc:annotation-driven><!-- 自定义注册属性编辑器 -->    <bean id="conversionService"        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">        <property name="converters">            <list>                <bean class="yycg.base.action.converters.StringTrimConverter" />                <bean class="yycg.base.action.converters.DateConverter" />                <bean class="yycg.base.action.converters.DatetimeConverter" />            </list>        </property>    </bean>

1.1.2 自定义的参数解析器

Springmvc调用action方法过程,通过参数解析器:

Springmvc自带了很多的参数解析器,一般能满足需求。

可以自定义参数解析器:

需求:
从session中取当前用户身份信息。
实现:
通过形参定义ActiveUser activeUser,需要由参数解析器来解析这个值,
解析过程:从session取出activeUser给形参赋值。

自定义参数解析器方法:

实现:implements WebArgumentResolver

public class UserArgumentResolver implements WebArgumentResolver {    //methodParameter存储action方法的参数信息    //webRequest是springmvc封装对象,通过此对象获取request和session等域的值    @Override    public Object resolveArgument(MethodParameter methodParameter,            NativeWebRequest webRequest) throws Exception {        //如果参数的类型是activeUser从session中取当前用户信息设置到action方法形参上        if(methodParameter.getParameterType().equals(ActiveUser.class)){            //从session中取当前用户信息            ActiveUser activeUser = (ActiveUser) webRequest.getAttribute(Config.ACTIVEUSER_KEY, WebRequest.SCOPE_SESSION);            return activeUser;//将参数值向action的方法形参赋值        }        return UNRESOLVED;    }}

配置自定义的参数解析器:
在springmvc.xml中配置:

<mvc:annotation-driven conversion-service="conversionService">        <mvc:argument-resolvers>                 <bean class="yycg.base.action.converters.UserArgumentResolver"/>          </mvc:argument-resolvers>     </mvc:annotation-driven>

1.1.3 修改链接
这里写图片描述

由于修改窗口较大,新开的标签窗口。
var sendUrl = “${baseurl}cgd/editcgd.action?id=”+bm;
parent.opentabwindow(bm+’采购单修改’,sendUrl);//调用父窗口打开一个新标签

function yycgdedit(bm){
var sendUrl = “${baseurl}cgd/editcgd.action?id=”+bm;
parent.opentabwindow(bm+’采购单修改’,sendUrl);//打开一个新标签
}

1.1.4 维护功能和查询功能区别

维护功能:增、删、改、查

查询功能:仅查询

采购单维护功能:给医院使用的,医院对自己创建的采购单进行维护。
通常实现时,让用户通过维护可以查询所有信息。
采购单查询功能:给监管单位和医院用户使用,卫生局可以查询所有医院下的采购单,卫生院可以查询本区域医院创建的采购单,医院只查询自己创建 采购单
通常实现时,让用户通过查询功能仅查询有权限看见的内容。

通常将查询功能和维护功能分别开发。

0 0