Spring MVC customdateEditor не работает - PullRequest
0 голосов
/ 09 июня 2011

У меня есть форма с датой.Я зарегистрировал 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.Я видел ответы на соответствующие вопросы, но не смог найти ошибку.

1 Ответ

4 голосов
/ 09 июня 2011

снято в темноте;попробуйте просто переопределить метод initBinder ():

@Override
public void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) {
    DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
    dateFormat.setLenient(false);
    binder.registerCustomEditor(Date.class,"endDate", new CustomDateEditor(
            dateFormat, false));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...