我正在使用属性来制作多语言错误警报以进行验证(Annotation 和 Spring) 我想检查它的@NotBlank 和@Size 但即使我使用
<c:set var="checkusername"><form:errors path="username"/></c:set>
<c:if test="${checkusername == 'username.id'}">
div class="loi"><s:message code="global.check.username"/></div>
</c:if>
<c:if test="${checkusername == 'username.length'}">
div class="loi"><s:message code="global.check.usernamelength"/></div>
</c:if>
或
<c:set var="checkusername"><form:errors path="username"/></c:set>
<c:if test="${checkusername eq 'username.id'}">
div class="loi"><s:message code="global.check.username"/></div>
</c:if>
<c:if test="${checkusername eq 'username.length'}">
div class="loi"><s:message code="global.check.usernamelength"/></div>
</c:if>
比较的结果,它是错误的,所以它没有按照我的预期工作
如果我将其测试为 <c:if test="${not empty checkusername}">
它确实有效但这对我没有帮助,因为我也想检查它的长度。
这是我的属性代码:
global_vi.properties
global.check.username=Không được để username trống
global.check.usernamelength=username nhiều nhất là 50 chữ
global.properties
global.check.username=Do not leave username empty
global.check.usernamelength=Username only contain 50 words
我的模型用户:
@Entity
@Table(name = "Users")
public class User {
@Id
@Column(name = "username")
@NotBlank(message = "username.id")
@Size(min=0,max=50,message="username.length")
private String username;
@Column(name = "password")
@NotBlank(message = "Không được để trống mật khẩu")
private String password;
@Column(name = "fullname")
@NotBlank(message = "Không được để trống họ tên")
private String fullname;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User(String username, String password, String fullname) {
this.username = username;
this.password = password;
this.fullname = fullname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
最佳答案
您可以使用 Bean 验证显示多区域设置错误消息。
您只需很少的配置即可实现此目的。
@Bean(name = "messageSource")
public ReloadableResourceBundleMessageSource validationMessageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:global");
...
return messageSource;
}
这将从相应的区域设置文件中获取错误消息。
@Bean
public LocaleResolver localeResolver(){
SessionLocaleResolver r = new SessionLocaleResolver();
r.setDefaultLocale(Locale.US);
return r;
}
需要注册我们的LocaleResolver
作为一颗 bean
@Override
public void addInterceptors (InterceptorRegistry registry) {
LocaleChangeInterceptor l = new LocaleChangeInterceptor();
l.setParamName("localeCode");
registry.addInterceptor(l);
}
此拦截器可以更改底层 LocaleResolver
的当前区域设置仅当 HTTP 请求中存在指定的请求参数(由 LocaleChangeInterceptor.setParamName(..)
设置)时,才会在每个请求上执行。
和
...
@NotBlank(message = "{global.check.username}")
@Size(min=0,max=50,message="{global.check.usernamelength}")
private String username;
@NotBlank(message = "{global.check.username}")
private String password;
...
关于java - Spring 验证中 JSTL 等于 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59715726/