【发布时间】:2015-08-02 15:46:01
【问题描述】:
我想自定义文本字段的错误消息以包含输入的实际字符数。我已经能够让它工作,但对我的解决方案不满意,所以我想知道其他人做了什么来完成这个。
- 春季 4.1.2
- 休眠 4.3.10
- 休眠验证器 5.1.3
Field Annotation(限于 10 个用于测试目的 - 实际大小为 150 个)
@Column(name = "NAME", nullable = false)
@Size(max=10)
private String name;
message.properties
Size.person.name=Maximum is {1} characters
JSP 代码
<spring:bind path="person.name">
<c:set var="nameError">${status.errorMessage}</c:set>
<c:set var="nameDisplayValue">${status.displayValue}</c:set>
<c:set var="nameCode">${status.errorCode}</c:set>
</spring:bind>
<c:if test="${fn:contains(nameCode,'Size')}">
<c:set var="nameLen">${fn:length(nameDisplayValue)}</c:set>
<c:if test="${nameLen gt 0}">
<c:set var="nameError">${nameError += " (you entered " += nameLen += ")"}</c:set>
</c:if>
</c:if>
<div class="form-group col-sm-9 <c:if test="${not empty nameError}">has-error</c:if>">
<label class="control-label" id="nameLabel" for="inputName">Name:<c:if test="${not empty nameError}"> ${nameError}</c:if></label>
<form:input type="text" size="10" class="form-control" id="inputName" placeholder="Name" path="name" autocomplete="off"/>
</div>
输出
这对于一个字段来说是可以的,但我正在处理的表单有超过 10 个具有大小验证的字段。此外,form:input 的 size="10" 设置似乎实际上并没有做任何事情,也就是说,您仍然可以输入超过 10 个字符。
我知道一种选择是编写一个自定义验证器,但这对于我想做的事情来说似乎有点过头了。另一个是在表单发布之前捕获错误,但我试图将所有验证服务器端保留。任何建议将不胜感激。
【问题讨论】:
标签: spring hibernate validation