首页 文章

spring-mvc liferay portlet应用程序中的可选表单字段

提问于
浏览
1

我有一个很大的表单,有很多日期字段和int字段我的行动阶段方法是这样的:

public void createCamapign(WebRequest request,ActionResponse response ,
        Model model, @ModelAttribute("searchForm") CreateCampaignForm form) throws Exception{

无论如何,如果我没有填充渲染表单中的所有字段,表单是我的包装bean我的应用程序崩溃与此错误

[org.springframework.web.portlet.DispatcherPortlet] - 处理程序执行导致异常 - 转发到已解析的错误视图org.springframework.validation.BindException:org.springframework.validation.BeanPropertyBindingResult:1 errors对象'searchForm'中的字段错误字段'activationDate':拒绝值[];代码[typeMismatch.searchForm.activationDate,typeMismatch.activationDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:codes [searchForm.activationDate,activationDate];参数[];默认消息[activationDate]];默认消息[无法将类型'java.lang.String'的属性值转换为属性'activationDate'所需的类型'java.util.Date';嵌套异常是java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为属性'activationDate'所需的类型[java.util.Date]:找不到匹配的编辑器或转换策略]

如何或在哪里指定这些字段在int字段的情况下是可选的我有点通过使用Integer类来解决它,但我不想对Date类型属性做同样的事情

2 回答

  • 0

    我不确定我是否正确理解你的问题 . 我不是 Spring 天的专家 . 只是一个建议,就像你可以使用依赖检查和@Required注释来使一些字段必要和其他可忽略的 .

  • 0

    您可以尝试将DateTimeFormat注释放在日期字段上,如下所示:

    @DateTimeFormat(pattern = "dd/mm/yyyy")  // put any pattern you want
     private Date myDate;
    

    注意:如果您使用的是早于3.2的Spring版本,则需要将 joda date library添加到项目类路径中

相关问题