java - Spring 验证中 JSTL 等于 String

标签 java spring jstl el

我正在使用属性来制作多语言错误警报以进行验证(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/

相关文章:

java - 等待 GPS 修复对话框抛出错误 token 异常 - Android

java - 为什么这个@JsonIgnore 修复了我的无限循环?

java - 如何使用 Java 解析行业基础类 (IFC) 文件?

java - 如何使用 Spring 创建 bean 验证框架

java - org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V

java - 将对象存储到 JSTL 请求中的成本

java - Apache Taglibs 和 Glassfish JSTL 的实现之间的区别?

java - 在不使用 Intellij 中的 AppMain 类的情况下运行 java 类

java - 为什么我的 Spring @Autowired 字段为空?

java - JSP/JSTL 使用或不使用 <c :out> tags