对于日期类型的属性转换通过注入属性编辑器。
可以在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>
由于修改窗口较大,新开的标签窗口。
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 维护功能和查询功能区别
维护功能:增、删、改、查
查询功能:仅查询
采购单维护功能:给医院使用的,医院对自己创建的采购单进行维护。
通常实现时,让用户通过维护可以查询所有信息。
采购单查询功能:给监管单位和医院用户使用,卫生局可以查询所有医院下的采购单,卫生院可以查询本区域医院创建的采购单,医院只查询自己创建 采购单
通常实现时,让用户通过查询功能仅查询有权限看见的内容。
通常将查询功能和维护功能分别开发。