鍦?/span>Struts2涓渶綆鍗曠殑楠岃瘉鏁版嵁鐨勬柟娉曟槸浣跨敤validate銆傛垜浠粠ActionSupport綾葷殑婧愪唬鐮佷腑鍙互鐪嬪埌錛?/span>ActionSupport綾誨疄鐜頒簡涓涓?/span>Validateable鎺ュ彛銆傝繖涓帴鍙e彧鏈変竴涓?/span>validate鏂規硶銆傚鏋?/span>Action綾誨疄鐜頒簡榪欎釜鎺ュ彛錛?/span>Struts2鍦ㄨ皟鐢?/span>execute鏂規硶涔嬪墠棣栧厛浼氳皟鐢ㄨ繖涓柟娉曪紝鎴戜滑鍙互鍦?/span>validate鏂規硶涓獙璇侊紝濡傛灉鍙戠敓閿欒錛屽彲浠ユ牴鎹敊璇殑level閫夋嫨瀛楁綰ч敊璇紝榪樻槸鍔ㄤ綔綰ч敊璇傚茍涓斿彲浣跨敤addFieldError鎴?/span>addActionError鍔犲叆鐩稿簲鐨勯敊璇俊鎭紝濡傛灉瀛樺湪Action鎴?/span>Field閿欒錛?/span>Struts2浼氳繑鍥?#8220;input”錛堣繖涓茍涓嶇敤寮鍙戜漢鍛樺啓錛岀敱Struts2鑷姩榪斿洖錛夛紝濡傛灉榪斿洖浜?#8220;input”錛?/span>Struts2灝變笉浼氬啀璋冪敤execute鏂規硶浜嗐傚鏋滀笉瀛樺湪閿欒淇℃伅錛?/span>Struts2鍦ㄦ渶鍚庝細璋冪敤execute鏂規硶銆?/span>
榪欎袱涓?/span>add鏂規硶鍜?/span>ActionErrors綾諱腑鐨?/span>add鏂規硶綾諱技錛屽彧鏄?/span>add鏂規硶鐨勯敊璇俊鎭渶瑕佷竴涓?/span>ActionMessage瀵硅薄錛屾瘮杈冮夯鐑︺傞櫎浜嗗姞鍏ラ敊璇俊鎭錛岃繕鍙互浣跨敤addActionMessage鏂規硶鍔犲叆鎴愬姛鎻愪氦鍚庣殑淇℃伅銆傚綋鎻愪氦鎴愬姛鍚庯紝鍙互鏄劇ず榪欎簺淇℃伅銆?/span>
浠ヤ笂涓変釜add鏂規硶閮藉湪ValidationAware鎺ュ彛涓畾涔夛紝騫朵笖鍦?/span>ActionSupport綾諱腑鏈変竴涓粯璁ょ殑瀹炵幇銆傚叾瀹烇紝鍦?/span>ActionSupport綾諱腑鐨勫疄鐜板疄闄呬笂鏄皟鐢ㄤ簡ValidationAwareSupport涓殑鐩稿簲鐨勬柟娉曪紝涔熷氨鏄繖涓変釜add鏂規硶鏄湪ValidationAwareSupport綾諱腑瀹炵幇鐨勶紝浠g爜濡備笅錛?br />
private final ValidationAwareSupport validationAware = new ValidationAwareSupport();
public void addActionError(String anErrorMessage)
{ validationAware.addActionError(anErrorMessage);
}
public void addActionMessage(String aMessage)
{
validationAware.addActionMessage(aMessage);
}
public void addFieldError(String fieldName, String errorMessage)
{
validationAware.addFieldError(fieldName, errorMessage);
}
涓嬮潰鎴戜滑鏉ュ疄鐜頒竴涓畝鍗曠殑楠岃瘉紼嬪簭錛屾潵浣撻獙涓涓?/span>validate鏂規硶鐨勪嬌鐢ㄣ?/span>
鍏堟潵鍦?/span>Web鏍圭洰褰曞緩绔嬩竴涓富欏甸潰錛?/span>validate.jsp錛夛紝浠g爜濡備笅錛?/span>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>楠岃瘉鏁版嵁</title>
</head>
<body>
<s:actionerror/>
<s:actionmessage/>
<s:form action="validate.action" theme="simple">
杈撳叆鍐呭錛?/span><s:textfield name="msg"/>
<s:fielderror key="msg.hello" />
<br/>
<s:submit/>
</s:form>
</body>
</html>
鍦ㄤ笂闈㈢殑浠g爜涓紝浣跨敤浜?/span>Struts2鐨?/span>tag錛?/span><s:actionerror>銆?/span><s:fielderror>鍜?/span><s:actionmessage>錛屽垎鍒敤鏉ユ樉紺哄姩浣滈敊璇俊鎭紝瀛楁閿欒淇℃伅錛屽拰鍔ㄤ綔淇℃伅銆傚鏋滀俊鎭負絀猴紝鍒欎笉鏄劇ず銆?/span>
鐜板湪鎴戜滑鏉ュ疄鐜頒竴涓姩浣滅被錛屼唬鐮佸涓嬶細
package action;
import javax.servlet.http.*;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.*;
public class ValidateAction extends ActionSupport
{
private String msg;
public String execute()
{
System.out.println(SUCCESS);
return SUCCESS;
}
public void validate()
{
if(!msg.equalsIgnoreCase("hello"))
{
System.out.println(INPUT);
this.addFieldError("msg.hello", "蹇呴』杈撳叆hello!");
this.addActionError("澶勭悊鍔ㄤ綔澶辮觸!");
}
else
{
this.addActionMessage("鎻愪氦鎴愬姛");
}
}
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
}
澶у浠庝笂闈㈢殑浠g爜鍙互鐪嬪嚭錛?/span>Field閿欒闇瑕佷竴涓?/span>key錛堜竴鑸敤鏉ヨ〃紺烘槸鍝竴涓睘鎬у嚭鐨勯敊璇級錛岃?/span>Action閿欒鍜?/span>Action娑堟伅鍙鎻愪緵涓涓俊鎭瓧絎︿覆灝卞彲浠ヤ簡銆?/span>
鏈鍚庢潵閰嶇疆涓涓嬭繖涓?/span>Action錛屼唬鐮佸涓嬶細
<package name="demo" extends="struts-default">
<action name="validate" class="action.ValidateAction">
<result name="success">/error/validate.jsp</result>
<result name="input">/error/validate.jsp</result>
</action>
</package>
鍋囪搴旂敤紼嬪簭鐨勪笂涓嬫枃璺緞涓?/span>demo錛屽垯鍙氳繃濡備笅鐨?/span>URL鏉ユ祴璇曠▼搴忥細
http://localhost:8080/demo/validate.jsp
鎴戜滑榪樺彲浠ヤ嬌鐢?/span>ValidationAware鎺ュ彛鐨勫叾浠栨柟娉曪紙鐢?/span>ValidationAwareSupport綾誨疄鐜幫級鑾峰緱鎴栬緗瓧孌甸敊璇俊鎭佸姩浣滈敊璇俊鎭互鍙婂姩浣滄秷鎭傚hasActionErrors鏂規硶鍒ゆ柇鏄惁瀛樺湪鍔ㄤ綔灞傜殑閿欒錛?/span>getFieldErrors鑾峰緱瀛楁閿欒淇℃伅錛堜竴涓?/span>Map瀵硅薄錛夈備笅闈㈡槸ValidationAware鎺ュ彛鎻愪緵鐨勬墍鏈夌殑鏂規硶錛?/span>
package com.opensymphony.xwork2;
import java.util.Collection;
import java.util.Map;
public interface ValidationAware
{
void setActionErrors(Collection errorMessages);
Collection getActionErrors();
void setActionMessages(Collection messages);
Collection getActionMessages();
void setFieldErrors(Map errorMap);
Map getFieldErrors();
void addActionError(String anErrorMessage);
void addActionMessage(String aMessage);
void addFieldError(String fieldName, String errorMessage);
boolean hasActionErrors();
boolean hasActionMessages();
boolean hasErrors();
boolean hasFieldErrors();
}