簡體   English   中英

spring-mvc liferay portlet應用程序中的可選表單字段

[英]Optional form fields in spring-mvc liferay portlet application

我的表單很大,有很多日期字段和整數字段,我的操作階段方法是這樣的:

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個錯誤字段“ searchForm”中的字段錯誤'activationDate':拒絕值[]; 代碼[typeMismatch.searchForm.activationDate,typeMismatch.activationDate,typeMismatch.java.util.Date,typeMismatch]; 參數[org.springframework.context.support.DefaultMessageSourceResolvable:代碼[searchForm.activationDate,activationDate]; 參數[]; 默認消息[activationDate]]; 默認消息[無法將類型'java.lang.String'的屬性值轉換為屬性'activationDate'的必需類型'java.util.Date'; 嵌套的異常是java.lang.IllegalStateException:無法將屬性'activationDate'的[java.lang.String]類型的值轉換為所需的類型[java.util.Date]:未找到匹配的編輯器或轉換策略]

在int字段的情況下,我如何或在何處指定這些字段是可選的,我通過使用Integer類解決了它,但是我不希望對Date類型屬性執行相同操作

我不確定我是否正確理解您的問題。 我不是Spring的專家。 只是一個建議,就像您可以利用依賴項檢查和@Required注釋使一些必填字段和其他可忽略字段一樣。

您可以嘗試在日期字段上放置DateTimeFormat批注,如下所示:

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

注意:如果使用的Spring版本早於3.2,則需要將joda日期庫添加到項目類路徑中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM