環境類型轉換:訪問Spring WebFlow和日期格式
春3.1.3.RELEASE
春Webflow的2.3.0.RELEASE
我最近發佈了此問題的泉源論壇。請參閱: Spring webflow formatting issue
我跟着和參考文檔中介紹的步驟在計算器上回答過:
我希望當我的表單提交,並結合發生時,解析拋出異常輸入無效的日期值時。但我不認爲這發生。
此外,如果和當拋出異常時,我如何處理它在前端顯示錯誤消息?
我想在我的應用程序中開始使用類型轉換。我按照下面的步驟爲Spring MVC和SWF配置了類型轉換格式。
我遵循的步驟,並加入到servlet上下文
<!-- Enables controllers mapped with @RequestMapping annotations, formatting annotations @NumberFormat
@DateTimeFormat, and JSR 303 style validation -->
<mvc:annotation-driven conversion-service="applicationConversionService1" />
<webflow:flow-builder-services id="flowBuilderServices" conversion-service="defaultConversionService" view-factory-creator="mvcViewFactoryCreator" development="true"/>
<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService">
<constructor-arg ref="applicationConversionService1"/>
</bean>
我創建了一個新的類來註冊自己在雙方的Spring MVC和Spring Web Flow的使用格式。
@Component(value = "applicationConversionService1")
public class ApplicationConversionServiceFactoryBean extends
FormattingConversionServiceFactoryBean {
@Override
protected void installFormatters(FormatterRegistry registry) {
// Register the default date formatter provided by Spring
registry.addFormatter(new DateFormatter("dd/MM/yyyy"));
}
}
現在,當我部署到服務器,上下文被正確初始化並且類路徑掃描註冊該bean。
在我的表單模型綁定,我用新的dateformat註釋註釋日期字段。
@DateTimeFormat(pattern="dd/MM/yyyy")
private Date revisedTermExpiryDate = new Date();
更新: 我調試,正如我在我的類路徑中有喬達時間,我相信春天註冊喬達DateTimeFormatter而不是和解析沒有失敗。
如果我實際上刪除了註釋,它會調用DateFormatter,它會像預期的那樣引發解析異常,但在框架中會吞噬異常。
我的目標是註冊普通的DateFormatter與全局默認日期,嚴格解析(lenient = false)和正常處理任何解析異常。這對我來說是一個很棒的功能,而不是處理每個Web流的驗證器中的日期分析。
謝謝, 謝恩。
你寫道:「我已經使用新的dateformat註解了一個日期字段 @DateTimeFormat(pattern =」dd/MM/yyyy「) - 所以DateFormatter類有寬容爲false,所以我期望提交表單輸入字段,如果O例如輸入值'24/15/2012',但是沒有輸入,則會發生解析異常。「 - 但你爲什麼期望這個,格式是正確的! – Ralph
請在這裏發佈問題,而不是隻發佈到其他論壇的鏈接。 – Ralph
ralph歡呼的回覆。這不是我的問題。它不是問題的格式。格式化程序應嚴格解析,因爲寬鬆是錯誤的。即月份值不正確。我已經做了一些挖掘,並相信我的格式化程序沒有註冊,因爲我在我的classpath中調用了joda DateTimeFormatter。我的目標是嚴格解析前端輸入日期,並在我的應用程序中優雅地處理異常。 –