2014-11-01 64 views
0

Hibernate驗證器不顯示錯誤消息。我錯過了什麼?請參閱下面的代碼。休眠驗證器不顯示錯誤消息

這裏是一個依賴:

<!-- Hibernate Validator --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>4.2.0.Final</version> 
</dependency> 

而且實體註釋列:從控制器

@Entity 
@Table(name = "transport") 
public class Transport { 

    .... 

    @NotEmpty 
    @Column(name = "name") 
    private String name; 

    .... 
} 

這裏有方法:

//show all and add form 
    @RequestMapping (value = "/admin/transports", method = RequestMethod.GET) 
    public String findAll(ModelMap map){ 
     List<Transport> transports = transportService.findAll(); 
     map.put("transport", new Transport()); 
     map.put("transports", transports); 
     return "admin/transports/list"; 
    } 

//add new 
@RequestMapping(value = "/admin/transport/add", method = RequestMethod.POST) 
public String addTypeShop(@ModelAttribute("type") @Valid Transport transport, BindingResult result) { 
    if (result.hasErrors()) { 
     return "redirect:/admin/transports"; 
    } else { 
     this.transportService.addTransport(transport); 
     return "redirect:/admin/transports"; 
    } 
} 

和JSP頁面:

<form:form role="form" action="/admin/transport/add" method="post" commandName="transport"> 
    <div class="row"> 
     <div class="col-lg-6"> 
      <div class="form-group"> 
       <label for="name">Name</label> 
       <form:input type="text" path="name" class="form-control input-sm" id="name" autofocus="true"/> 
       <form:errors path="name"/> 
      </div> 
     </div> 
    <input type="submit" class="btn btn-sm btn-primary" value="Add" onclick="loading()"/> 
</form:form> 
+0

你不在任何地方調用驗證器。在這裏看到這個教程:http://hibernate.org/validator/documentation/getting-started/。 – Tom 2014-11-01 15:14:40

+0

驗證工作,只是不顯示錯誤消息 – user3127896 2014-11-01 15:54:23

回答

0

您沒有任何代碼將錯誤返回給最終用戶。

請參閱以下鏈接的例子: http://www.mkyong.com/spring-mvc/spring-mvc-form-errors-tag-example/

而且,它看起來並不像你實際上是在你的形式設置你的命令對象。儘管你可能沒有顯示該代碼。

小方面說明,如果您有驗證錯誤,我不會做重定向,只需將它們直接發回到它們來自的頁面。

編輯

進一步審查後,我就看到你有。通常情況下,這超出了表格本身。

<form:errors path="transport"/> 
<form:form role="form" action="/admin/transport/add" method="post" commandName="transport"> 
    <div class="row"> 
     <div class="col-lg-6"> 
      <div class="form-group"> 
       <label for="name">Name</label> 
       <form:input type="text" path="name" class="form-control input-sm" id="name" autofocus="true"/> 

      </div> 
     </div> 
     <input type="submit" class="btn btn-sm btn-primary" value="Add" onclick="loading()"/> 
    </div> 
</form:form> 
+0

我有,我認爲它應該工作,不是嗎? – user3127896 2014-11-01 15:16:42

+0

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/我看了這個例子,他沒有創建任何驗證器 – user3127896 2014-11-01 15:18:52

+0

您必須使用名稱你的命令對象。所以在你的情況下,它應該是 hooknc 2014-11-01 15:24:13