Spring 4 资源属性文件
Spring 4 resource properties file
MyClass
@Entity
@Table(name = "PIL_P_APPLCTN")
public class PIL_P_APPLCTN extends META_INF {
@NotBlank
@Column(unique = true, nullable = false, name = "APPLCTN_CD")
private String APPLCTN_CD;
@NotBlank
@Column(nullable = false, name = "APPLCTN_ID")
private String APPLCTN_ID;
@NotBlank
@Column(nullable = false, name = "APPLCTN_DS")
private String APPLCTN_DS;
@NotNull
@Digits(integer = 20, fraction = 0)
@Column(nullable = false, name = "DECLG_IDNTFNT_NU")
private BigDecimal DECLG_IDNTFNT_NU;
}
messages.properties 在 src/main/resources
NotBlank.pil_p_applctn.APPLCTN_CD=Champ obligatoire !
NotBlank.pil_p_applctn.APPLCTN_ID=Champ obligatoire !
NotNull.pil_p_applctn.APPLCTN_DS=Champ obligatoire !
NotBlank.pil_p_applctn.DECLG_IDNTFNT_NU=Champ obligatoire !
Digits.pil_p_applctn.DECLG_IDNTFNT_NU=Seules les données numériques sont acceptées avec max 20 chiffres !
non.unique.APPLCTN_CD={0} existe déjà !
typeMismatch=Format invalide !
AppConfig.class
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.fussa.fyby")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
当我尝试时
messageSource.setBasename("classpath:/messages");
或
messageSource.setBasename("classpath:messages");
此消息在控制台中显示:
WARN : org.springframework.context.support.ResourceBundleMessageSource
- ResourceBundle [classpath:/messages] not found for MessageSource: Can't find bundle for base name classpath:/messages, locale fr_FR
所以我认为 messageSource.setBasename("messages");
可以访问 messages.properties.. 但为什么在我的 jsp 文件中显示了默认消息而不是messages.properties !
中的那些
感谢您的任何建议..
由于您的语言环境是 fr_FR
,请将您的文件重命名为 messages_fr.properties
这将允许 spring 根据所选的显示语言选择正确的文件。
通过从 messages.properties 中删除一些自定义消息并将其添加到 我的实体
来解决问题
@Entity
@Table(name = "PIL_P_APPLCTN")
public class PIL_P_APPLCTN extends META_INF {
@NotBlank(message="Champ obligatoire !")
@Column(unique = true, nullable = false, name = "APPLCTN_CD")
private String APPLCTN_CD;
@NotBlank(message="Champ obligatoire !")
@Column(nullable = false, name = "APPLCTN_ID")
private String APPLCTN_ID;
@NotBlank(message="Champ obligatoire !")
@Column(nullable = false, name = "APPLCTN_DS")
private String APPLCTN_DS;
@NotNull(message="Champ obligatoire !")
@Digits(integer = 20, fraction = 0,message="Max 20 chiffres !")
@Column(nullable = false, name = "DECLG_IDNTFNT_NU")
private BigDecimal DECLG_IDNTFNT_NU;
public PIL_P_APPLCTN() {
}}
messages.properties
non.unique.APPLCTN_CD=" {0} " existe déjà !
typeMismatch=Format invalide !
MyClass
@Entity
@Table(name = "PIL_P_APPLCTN")
public class PIL_P_APPLCTN extends META_INF {
@NotBlank
@Column(unique = true, nullable = false, name = "APPLCTN_CD")
private String APPLCTN_CD;
@NotBlank
@Column(nullable = false, name = "APPLCTN_ID")
private String APPLCTN_ID;
@NotBlank
@Column(nullable = false, name = "APPLCTN_DS")
private String APPLCTN_DS;
@NotNull
@Digits(integer = 20, fraction = 0)
@Column(nullable = false, name = "DECLG_IDNTFNT_NU")
private BigDecimal DECLG_IDNTFNT_NU;
}
messages.properties 在 src/main/resources
NotBlank.pil_p_applctn.APPLCTN_CD=Champ obligatoire !
NotBlank.pil_p_applctn.APPLCTN_ID=Champ obligatoire !
NotNull.pil_p_applctn.APPLCTN_DS=Champ obligatoire !
NotBlank.pil_p_applctn.DECLG_IDNTFNT_NU=Champ obligatoire !
Digits.pil_p_applctn.DECLG_IDNTFNT_NU=Seules les données numériques sont acceptées avec max 20 chiffres !
non.unique.APPLCTN_CD={0} existe déjà !
typeMismatch=Format invalide !
AppConfig.class
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.fussa.fyby")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
当我尝试时
messageSource.setBasename("classpath:/messages");
或
messageSource.setBasename("classpath:messages");
此消息在控制台中显示:
WARN : org.springframework.context.support.ResourceBundleMessageSource - ResourceBundle [classpath:/messages] not found for MessageSource: Can't find bundle for base name classpath:/messages, locale fr_FR
所以我认为 messageSource.setBasename("messages");
可以访问 messages.properties.. 但为什么在我的 jsp 文件中显示了默认消息而不是messages.properties !
感谢您的任何建议..
由于您的语言环境是 fr_FR
,请将您的文件重命名为 messages_fr.properties
这将允许 spring 根据所选的显示语言选择正确的文件。
通过从 messages.properties 中删除一些自定义消息并将其添加到 我的实体
来解决问题@Entity
@Table(name = "PIL_P_APPLCTN")
public class PIL_P_APPLCTN extends META_INF {
@NotBlank(message="Champ obligatoire !")
@Column(unique = true, nullable = false, name = "APPLCTN_CD")
private String APPLCTN_CD;
@NotBlank(message="Champ obligatoire !")
@Column(nullable = false, name = "APPLCTN_ID")
private String APPLCTN_ID;
@NotBlank(message="Champ obligatoire !")
@Column(nullable = false, name = "APPLCTN_DS")
private String APPLCTN_DS;
@NotNull(message="Champ obligatoire !")
@Digits(integer = 20, fraction = 0,message="Max 20 chiffres !")
@Column(nullable = false, name = "DECLG_IDNTFNT_NU")
private BigDecimal DECLG_IDNTFNT_NU;
public PIL_P_APPLCTN() {
}}
messages.properties
non.unique.APPLCTN_CD=" {0} " existe déjà !
typeMismatch=Format invalide !