У меня есть форма с датой.Я зарегистрировал customDateEditor для преобразования пользовательского ввода String в дату.
public class CategoryExclusionFormController extends SimpleFormController {
private ModelMap modelMap = new ModelMap();
protected final Log logger = LogFactory.getLog(getClass());
private ExclusionDAO exclusionDAO;
public ExclusionDAO getExclusionDAO() {
return exclusionDAO;
}
public void setExclusionDAO(ExclusionDAO exclusionDAO) {
this.exclusionDAO = exclusionDAO;
}
public ModelAndView onSubmit(Object command)
throws ServletException {
return new ModelAndView(new RedirectView(getSuccessView()));
}
protected Object formBackingObject(HttpServletRequest request) throws ServletException {
CatExclCriteria catExcl = new CatExclCriteria();
return catExcl;
}
@Override
protected Map referenceData(HttpServletRequest request) throws Exception {
modelMap.put("categories", exclusionDAO.getCategories());
modelMap.put("statuses", exclusionDAO.getStatuses());
return modelMap;
}
@InitBinder
public void initBinder(WebDataBinder binder) {
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class,"endDate", new CustomDateEditor(
dateFormat, false));
}
}
Мой jsp имеет Введите дату начала в формате MM-dd-YYYY
<form:input path="endDate" />
</form:form>
У моего appname-servlet.xml есть
<bean name="/categoryExcl.htm" class="com.lsr.CategoryExclusionFormController">
<property name="sessionForm" value="true"/>
<property name="commandName" value="catExcl"/>
<property name="commandClass" value="com.lsr.model.CatExclCriteria"/>
<property name="formView" value="categoryExclusion"/>
<property name="successView" value="home.htm"/>
<property name="exclusionDAO" ref="exclusionDAO"/>
</bean>
Когда явведите дату и нажмите отправить, я получаю следующую ошибку
Field error in object 'catExcl' on field 'endDate': rejected value [05-12-2011];
codes [typeMismatch.catExcl.endDate,typeMismatch.endDate,typeMismatch.java.util.Date,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes
[catExcl.endDate,endDate]; arguments []; default message [endDate]];
default message
[Failed to convert property value of type [java.lang.String] to required type
[java.util.Date] for property 'endDate'; nested exception is
java.lang.IllegalArgumentException:
Cannot convert value of type [java.lang.String] to required type [java.util.Date] for
property 'endDate': no matching editors or conversion strategy found],
Я не уверен, почему он не использует customDateEditor.Я видел ответы на соответствующие вопросы, но не смог найти ошибку.