2016-10-07 10 views
0

私の春のブートmvcアプリケーションで動作するモデル検証を取得しようとしています。私はビューテンプレートとしてフリーメーカを使用しています。私の問題は、たとえモデルバリデーションが期待通りに機能しても、モデルエラーが私のビューに表示されないことです。スプリングブートFreemarker status.errorMessagesに値が設定されていません

ここにいくつかのコード例を示します。モデル:

public class TestModel { 
    @Size(min=2, max=10) 
    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

コントローラ

@Controller 
@RequestMapping("/test") 
public class OrderController extends BaseController { 
    @RequestMapping(value = "new/greenhouse", method = RequestMethod.GET) 
    public String get(@ModelAttribute TestModel testModel) { 
     testModel.setName("Hello world"); 
     return "test.ftl"; 
    } 

    @RequestMapping(value = "/test", method = RequestMethod.POST) 
    public String post(@ModelAttribute @Valid TestModel testModel, BindingResult bindingResult) { 
     if (bindingResult.hasErrors()) { 
      // The bindingResult contains the "correct" errors 
      return "test.ftl"; 
     } 
     return "redirect:/"; 
    } 
} 

ビュー:

<#import "../layout.ftl" as layout /> 
<#import "/spring.ftl" as spring /> 
<#import "../freemarker.ftl" as ftl /> 

<@layout.defaultLayout> 

<form action="/test" method="post"> 
    <@ftl.csrfToken /> 

    Name: 
    <@spring.formInput "testModel.Name" /> 
    <@spring.showErrors "<br>" /> <#-- Does not print the error as status.errorMessages is not populated --> 

    <#-- This will at least display the default Message --> 
    <#list spring.status.errors.allErrors as error> 
     <span class="has-error">${error.defaultMessage} </span> 
    </#list> 
</form> 
</@layout.defaultLayout> 

status.errorMessagesが読み込まれない理由を任意のアイデア?

答えて

0

だから私は最終的に、この解決策が見つかりました:(プライベートメンバ名はモデルクラスであるとして)

はFreemarkerのビューでプロパティ名は小文字する必要があります。正しい表示は次のようになります。

<@spring.formInput "testModel.name" /> 
<@spring.showErrors "<br>" /> 
関連する問題