# XML处理器
后端返回数据有时候需要进一步处理,然后在输出,这个时候,就可以使用XML中handler属性来配置类方法。自定义方法类需要继承AbstractHubDataHandler (opens new window)抽象类。
public abstract class AbstractHubDataHandler implements IHubDataHandler{
protected abstract void doHandle(HubXmlHandlerConfig dataConfig, Map<String, Object> dataMap);
@PostConstruct
public void init() {
if (StringUtils.isNotBlank(getRegisterName())) {
HubDataHandlerRegister.registerHandler(getRegisterName(), this);
}
}
@Override
public Object handle(HubXmlHandlerConfig dataConfig, Map<String, Object> dataMap) {
doHandle(dataConfig, dataMap);
return null;
}
//也可以在类中直接注册
protected String getRegisterName() {
return null;
}
}
说明
实现 doHandle
和 getRegisterName
两个方法,getRegisterName
这个是方法名,直接在hangler中使用,doHandle
表示具体实现。
# 举例说明
自定义一个日期格式化处理器
@Service
public class JsonFormatHubDataHandler extends AbstractHubDataHandler {
public static final String REG_NAME = "jsonFormat";
@Override
protected void doHandle(HubXmlHandlerConfig dataConfig, Map<String, Object> dataMap) {
List<Object> params = dataConfig.getParams();
Date date = (Date) dataMap.get(dataConfig.getName());
if (null != date) {
String pattern = (String) params.get(0);
dataMap.put(dataConfig.getName(), format(date, pattern));
}
}
private String format(Date date, String pattern) {
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
return dateFormat.format(date);
}
@Override
protected String getRegisterName() {
return REG_NAME;
}
}
那么在XML中可以这样使用
<controller name="SysUserController">
<grid name="TEST1">
<col name="crtTm" mapper="sysUserVo.crt_tm" descr="创建时间"
handler="jsonFormat(yyyy-MM-dd)"/>
</grid>
</controller>
也可以通过注解的方式配置
@Note(value = "创建时间", handler = "jsonFormat(yyyy-MM-dd)")
private Date crtTm;
说明
- 格式化时间,只输出年月日。
- 如果需要经过多个处理器处理,不同处理器之间用逗号","隔开即可。
赞助商