如果是simple 主题,还会自动显示错误消息吗? 如果不会显示,怎么办?
①.通过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 呢 ?
在 template.simple 下面的 fielderror.ftl 定义了 simple 主题下, s:fielderror 标签显示错误消息的样式. 所以修改该配置文件即可.
在 src 下新建 template.simple 包, 新建 fielderror.ftl 文件, 把原生的 fielderror.ftl 中的内容 复制到新建的 fielderror.ftl 中, 然后剔除 ul, li, span 部分即可.
原来数据结构
改完以后
改完以后的显示效果
时间: 2024-10-29 01:58:07