如果是simple 主题,还会自动显示错误消息吗? 如果不会显示,怎么办?
①.通过debug 标签,可以知道若转换出错,则在值栈的Action(首先,Action要已经实现了ValidationAware 接口) 对象中有一个fieldErrors属性,该属性的类型为Map<String,List<String>> 键:字段(属性名),值:错误信息组成的List,所以可以使用EL 或OGNL 的方式来显示错误信息
②. 还可以使用s:fieldErros 标签来显示 ,可以通过fieldName 属性显示指定消失字段的错误
①.通过debug 标签,可以知道若转换出错,则在值栈的Action(首先,Action要已经实现了ValidationAware 接口) 对象中有一个fieldErrors属性,该属性的类型为Map<String,List<String>> 键:字段(属性名),值:错误信息组成的List,所以可以使用EL 或OGNL 的方式来显示错误信息
②. 还可以使用s:fieldErros 标签来显示 ,可以通过fieldName 属性显示指定消失字段的错误
类 和 配置 详见:
struts2 中,如何覆盖默认的错误消息
修改页面如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:debug></s:debug>
<s:form action="testConversion" theme="simple">
Age:<s:textfield name="age" label="Age"></s:textfield>
<br>
显示错误消息的方式一 :${fieldErrors.age[0] }
<br>
显示错误消息的方式二: <s:fielderror fieldName="age"></s:fielderror>
<br>
<s:submit></s:submit>
</s:form>
</body>
</html>
效果:
而 错误消息二 的显示效果巨丑,改善方式是:
若是 simple 主题, 且使用 <s:fielderror fieldName="age"></s:fielderror> 来显示错误消息, 则该消息在一个 ul, li, span 中. 如何去除 ul, li, span 呢 ?
在 src 下新建 template.simple 包, 新建 fielderror.ftl 文件, 把原生的 fielderror.ftl 中的内容 复制到新建的 fielderror.ftl 中, 然后剔除 ul, li, span 部分即可.
原来数据结构
改完以后
改完以后的显示效果