如何对响应ajax调用而返回的对象应用属性编辑器?
我将控制器的属性编辑器指定为:如何对响应ajax调用而返回的对象应用属性编辑器?,ajax,spring,spring-mvc,Ajax,Spring,Spring Mvc,我将控制器的属性编辑器指定为: @InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); CustomDateEditor editor = new CustomDateEditor(dateFormat, true); binder.regis
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
binder.registerCustomEditor(Date.class, editor);
}
在我在AJAX调用中调用下面的方法之前,它工作得很好
@RequestMapping(value = "searchCriteria", method = RequestMethod.GET)
public @ResponseBody Set<SearchCriteria> loadSearchCriterias(){
// call service method to load criterias
Set<SearchCriteria> criterias = new HashSet<SearchCriteria>();
SearchCriteria sampleCriteria = new SearchCriteria();
sampleCriteria.setStartDate(new Date());
criterias.add(sampleCriteria);
return criterias;
}
我认为不可能对返回的值应用属性编辑器。弹簧有一个转换器机构 如果您返回
json
,并且在类路径中有,那么spring将使用它将对象转换为响应字符串。如果返回
xml
,并且类路径中有,那么spring将使用它将对象转换为响应字符串
如果您将Jackson
库与spring一起使用,则需要告诉Jackson您希望如何通过使用来序列化字段
例:
如果您想在全局范围内使用它,您可以尝试解释的机制。您需要为iThanks使用jackson序列化程序,但是如何配置jackson序列化程序以用于此类?您可以共享您的
搜索条件吗?
?添加了该类。我猜将注释添加到createdDate字段将自动强制Spring在类路径中的任何位置搜索DateTimeSerializer(或者我们必须在某个地方指定它吗?)
public class SearchCriteria{
Date startDate;
String name;
// getter setters
}
public class DateTimeSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
if (value != null) {
SimpleDateFormat f = new SimpleDateFormat(format);
jgen.writeString(f.format(value));
}
}
}
@JsonSerialize(using = DateTimeSerializer.class)
private Date createdDate;