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

 如果是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 主题不会自动显示错误消息,怎么办?_第1张图片


 而 错误消息二 的显示效果巨丑,改善方式是:

若是 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 部分即可.

 

Simple 主题不会自动显示错误消息,怎么办?_第2张图片

原来数据结构

Simple 主题不会自动显示错误消息,怎么办?_第3张图片

改完以后

Simple 主题不会自动显示错误消息,怎么办?_第4张图片

改完以后的显示效果


Simple 主题不会自动显示错误消息,怎么办?_第5张图片


你可能感兴趣的:(Simple 主题不会自动显示错误消息,怎么办?)