我有一个用户想要突出显示Struts2验证失败的字段。
我计划为我的Action-validation.xml
方法中失败的任何字段设置一个标志,并在加载JSP页面时使用该字段更改字段的背景。
我的问题是如何处理validate()
文件中验证失败的字段?我是否需要在{{1}}方法中进行所有验证?
还有一种方法可以突出显示生成
的字段字段的字段值无效...
错误?
任何帮助将不胜感激!
答案 0 :(得分:5)
此功能已在Struts2中构建,无需自定义标志或其他任何内容。在Struts2表单标签中有cssErrorClass
属性,它将在出错时为字段设置CSS类。
<style type="text/css">
.errField {
background-color: red;
}
</style>
<s:textfield key="name" cssErrorClass="errField" />
答案 1 :(得分:2)
我是否需要在
validate()
方法中进行所有验证?
没有
如何在Action-validation.xml文件中处理未通过验证的字段?
简单地放弃旗帜的想法,你正在重新发明轮子。
当验证失败时,无论是通过注释还是XML,都会添加fieldError。相反,当您使用validate()
方法时,您应该自己添加它。
然而,结果是相同的:你将有一个fieldError,其中每个字段的名称都没有传递一个或多个验证。
请注意:
还有一种方法可以突出显示生成
的字段字段的字段值无效...
错误?
这些是转换错误。它们由转换拦截器(read more)添加。
最后,无论是XML,validate()
,转换还是其他任何类型的fielderror都将在该对象中,那就是
Map<String,List<String>>
因为每个字段都可能有多个错误。
您可以在页面中迭代该地图,以便在使用simple
主题时通过Javascript(甚至是CSS)突出显示相关字段,因为with the other themes is just a mess)。
例如:
<style>
.highlightedError {
border: 2px solid red;
}
</style>
<script>
$(function(){
<s:if test="hasFieldErrors()">
<s:iterator value="fieldErrors">
var currentFieldError = '<s:property value="key" escapeJavascript="true" />';
$('[name="'+currentFieldError+"']").addClass('highlightedError');
</s:iterator>
</s:if>
});
</script>