您的位置:首页 > 其它

Simple 主题不会自动显示错误消息,怎么办?

2016-05-10 15:10 495 查看
如果是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 部分即可.





原来数据结构



改完以后






改完以后的显示效果





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: