2017-06-21 114 views
0

我使用註釋風格的Spring MVC。在我的配置類中,我聲明驗證實體POJO對象

@Bean("messageSource") 
public MessageSource getMessageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:messages"); 
    messageSource.setDefaultEncoding("UTF-8"); 
    return messageSource; 
} 

有'src/main/resources'文件夾與messages.properties。 我想現在執行的validatation是:

@Entity 
@Table(name = "contract") 
public class Contracts { 
     @NotNull 
     @Column(name = "payment_amount") 
     private Integer paymentAmount; 
} 

和文本屬性文件:

NotNull.contracts.paymentAmount = Invalid. 
NotEmpty.contracts.paymentAmount = Invalid. 
NotBlank.contracts.paymentAmount = Invalid. 
NotNull.contracts.paymentamount = Invalid. 
NotEmpty.contracts.paymentamount = Invalid. 
NotBlank.contracts.paymentamount = Invalid. 

,但它並不在所有的工作。最大的問題是我的其他應用程序在相同(或多或少)設置下工作正常。 因爲它可能是命名空間問題,我不會添加pom.xml,但maven可能會導致問題,因爲這是我現在唯一的犯罪嫌疑人。

回答

0

如果你有不正確的錯誤消息: 你不指定在@NotNull註釋的關鍵。 指定一個或在屬性文件中使用javax.validation.constraints.NotNull.message作爲鍵。

如果驗證未運行在所有:你把@Valid的方法的參數?

如果別的東西,請註明什麼是不工作的。

+0

我沒有把ModelAttribute有效的ClassName和BindingResults按順序。當我指定NotNull(消息)它可以工作,但外部文件似乎被彈簧配置遺漏。 – lucaskos

0

好了,所以我有它的工作。在做試驗的消息時,看它們是否由Spring看到那種我設法讓那些: 在我的測試文件:

String message = messageSource.getMessage("NotNull.contracts.startDate", null, Locale.getDefault()); 
     System.out.println(message); 

我得到了正確的消息。但是,當我嘗試運行我的Web應用程序時,我看到的唯一消息是硬編碼到Class註釋@NotNull(message =「」)中。 BTW爲測試工作我改變了messageSource到ResourceBundleMessageSource