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

springmvc属性编辑器:
Springmvc中对日期类型的属性转换问题和自定义的参数解析器_第1张图片

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

可以在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 修改链接
Springmvc中对日期类型的属性转换问题和自定义的参数解析器_第2张图片

由于修改窗口较大,新开的标签窗口。
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 维护功能和查询功能区别

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

查询功能:仅查询

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

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

你可能感兴趣的:(Springmvc中对日期类型的属性转换问题和自定义的参数解析器)