初用ActionError

本文介绍如何使用Struts框架中的ActionErrors进行表单验证。主要涵盖JSP页面错误信息展示、FormBean中验证逻辑实现及资源文件配置。通过具体代码示例说明如何设置和返回错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 关于ActionErrors
在struts的FormBean中用于表单数据的验证。
在三个方面要写代码,在Jsp页面里表达errors,Action和Form中返回errors,保存error信息的资源文件。
1.Jsp中的error表达
这里用到一个标签<html:errors/>
它将表示可显示的所有错误。
还可加入参数property,来选择性显示。
例如:用户名未输入时只想显示这个错误,则可用<html:errors property="username"/>
2.Form中返回errors
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
public ActionErrors validate(ActionMapping mapping,
   HttpServletRequest request) {
  // TODO Auto-generated method stub
  ActionErrors errors=new ActionErrors();
  
  if((username==null)||(username.length()<1)){
   errors.add("username",new ActionError("error.username.required"));
  }
  if((password==null)||(password.length()<1)){
   errors.add("password",new ActionError("error.password.required"));
  }
  
  return errors;
}
3.error资源文件
前面代码中的"error.username.required"、"error.password.required"指代资源文件中相应的参数。
struts的默认资源文件为ApplicationResources.properties
struts-config.xml中加入一句代码
<message-resources parameter="struts.ApplicationResources" />
# Resources for parameter 'struts.ApplicationResources'
# Project KnowHowBank
####################################
##header、footer为每个error加头、尾#
errors.header=<H3><font color="red">Validation Error</font></H3>You must correct the following error(s) before proceeding:<UL>
errors.footer=</UL><HR>
####################################
error.username.required=<LI>Username is required</LI>
error.password.required=<LI>Password is required</LI>
error.login.invalid=<LI>password must match exactly.</LI>
CREATE OR REPLACE FUNCTION IMES.FN_MES_ERROR_CODE_TRANSLATE ( T_ERROR_CODE VARCHAR2, --ErrorCode T_LANGUAGE VARCHAR2, --语言 T_PARAMS VARCHAR2 --报错参数,多个参数以#隔开,最多支持9个参数 ) RETURN VARCHAR2 IS V_COUNT NUMBER; V_ERRORCODE_CODE IMES.M_MES_ERROR_CODE.ERRORCODE%TYPE; V_ERRORCODE_DESC IMES.M_MES_ERROR_CODE.ERRORCODE_DESC%TYPE; V_NEXT_ACTION IMES.M_MES_ERROR_CODE.NEXT_ACTION%TYPE; V_NEED_LOG IMES.M_MES_ERROR_CODE.NEED_LOG%TYPE; V_LANGUAGE IMES.M_MES_ERROR_CODE.LANGUAGE%TYPE; V_RETURN VARCHAR2 (4000); CURSOR PARAMS IS SELECT REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 1) T1, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 2) T2, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 3) T3, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 4) T4, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 5) T5, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 6) T6, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 7) T7, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 8) T8, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 9) T9 FROM DUAL; CURSOR ERROR_DESC_PARAMS IS SELECT REGEXP_SUBSTR ( CASE WHEN INSTR (V_ERRORCODE_DESC, '$', 1) = 1 THEN ':' || V_ERRORCODE_DESC ELSE V_ERRORCODE_DESC END, '[^$]+', 1, LEVEL, 'i') AS STR FROM DUAL CONNECT BY LEVEL <= 9; /*************************************************************************** CREATE BY LEMON V1.0.0.0 2023/05/09 报错ERROR CODE翻译版 MODIFY BY LEMON V1.0.0.1 2023/05/24 优化$符在第一个字符,不替换参数的问题;语言传空值时,默认给EN ***************************************************************************/ BEGIN --检查ERROR CODE或LANGUAGE空值 IF T_ERROR_CODE = '' OR T_ERROR_CODE IS NULL THEN V_RETURN := 'ERROR CODE CAN NOT NULL'; RETURN V_RETURN; END IF; IF T_LANGUAGE = '' OR T_LANGUAGE IS NULL THEN V_LANGUAGE := 'EN'; ELSE V_LANGUAGE := T_LANGUAGE; END IF; --没有查询到ERROR CODE资料,直接退出 SELECT COUNT (1) INTO V_COUNT FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE; IF V_COUNT = 0 THEN V_RETURN := 'ERROR CODE: ' || T_ERROR_CODE || ', LANGUAGE: ' || V_LANGUAGE || ' IS NOT MAINTAIN'; RETURN V_RETURN; END IF; --ERROR CODE ENABLED = 'N',直接退出 SELECT COUNT (1) INTO V_COUNT FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE AND ENABLED = 'Y'; IF V_COUNT = 0 THEN V_RETURN := 'ERROR CODE: ' || T_ERROR_CODE || ', LANGUAGE: ' || V_LANGUAGE || ' IS DISABLED'; RETURN V_RETURN; END IF; FOR PARAM IN PARAMS LOOP EXIT WHEN PARAMS%NOTFOUND; --根据语言和ERROR CODE获取ERROR CODE信息 SELECT A.ERRORCODE, NVL (A.ERRORCODE_DESC, 'NULL'), NVL (A.NEXT_ACTION, 'NULL'), A.NEED_LOG INTO V_ERRORCODE_CODE, V_ERRORCODE_DESC, V_NEXT_ACTION, V_NEED_LOG FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE AND ENABLED = 'Y'; --替换ERROR CODE里面的参数 FOR ERROR_DESC_PARAM IN ERROR_DESC_PARAMS LOOP EXIT WHEN ERROR_DESC_PARAMS%NOTFOUND; EXIT WHEN ERROR_DESC_PARAM.STR IS NULL; V_RETURN := V_RETURN || ERROR_DESC_PARAM.STR || (CASE WHEN ERROR_DESC_PARAMS%ROWCOUNT = 1 THEN PARAM.T1 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 2 THEN PARAM.T2 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 3 THEN PARAM.T3 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 4 THEN PARAM.T4 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 5 THEN PARAM.T5 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 6 THEN PARAM.T6 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 7 THEN PARAM.T7 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 8 THEN PARAM.T8 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 9 THEN PARAM.T9 END); END LOOP; --拼接NEXT_ACTION IF V_NEXT_ACTION = 'NULL' OR V_NEXT_ACTION IS NULL THEN V_RETURN := V_RETURN; ELSE V_RETURN := V_RETURN || ' Next Action:' || V_NEXT_ACTION; END IF; END LOOP; RETURN T_ERROR_CODE || ' : ' || V_RETURN; END; /
最新发布
07-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值