struts2 中,怎么覆盖默认的异常消息
struts2 中,如何覆盖默认的错误消息
如何覆盖默认的错误消息?
①: 在对应的Action 类所在的包中新建 ActionClassName.preperties 文件,ActionClassName即为包含着 字段 的Action 类的类名
③ 错误消息的配置文件:ConversionAction.properties 其和Action在同一包 下
① struts.xml
页面:
如何覆盖默认的错误消息?
①: 在对应的Action 类所在的包中新建 ActionClassName.preperties 文件,ActionClassName即为包含着 字段 的Action 类的类名
②: 在属性文件中添加如下键值对:invalid.fieldvalue.fieldName=xxx
1.项目结构
2.示例如下:
Ⅰ类
① 实体类
package com.baidu.domain; public class Person { private int age; public Person() { super(); } public Person(int age) { super(); this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [age=" + age + "]"; } }
② Action:ConversionAction.java
package com.baidu.conversion; import com.baidu.domain.Person; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; public class ConversionAction extends ActionSupport implements ModelDriven<Person>,Preparable { private static final long serialVersionUID = 1L; public String testAge(){ System.out.println(person); return "success"; } private Person person; @Override public Person getModel() { person = new Person(); return person; } @Override public void prepare() throws Exception { } }
③ 错误消息的配置文件:ConversionAction.properties 其和Action在同一包 下
invalid.fieldvalue.age=\u5E74\u9F84\u9519\u8BEF
① struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <interceptors> <interceptor-stack name="baiduStack"> <interceptor-ref name="paramsPrepareParamsStack"> <param name="prepare.alwaysInvokePrepare">false</param> </interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="baiduStack"/> <action name="testConversion" class="com.baidu.conversion.ConversionAction" method="testAge"> <result name="success">/index.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts>
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
页面:
<%@ 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"> <s:textfield name="age" label="Age"></s:textfield> <s:submit></s:submit> </s:form> </body> </html>
效果
- 1楼chuck_kui2小时前
- 若 Action 类实现 ValidationAware 接口:n Struts 在遇到类型转换错误时将不会继续调用其 Action 方法: n Struts 将检查相关 action 元素的声明是否包含着一个 name=input 的 result. n 如果有, Struts 将把控制权转交给那个 result 元素; 若没有 input 结果, Struts 将抛出一个异常n 详见上面Ⅱ 配置文件中:struts.xml 的配置文件