× <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtds/web-app_2_3.dtd"> ^^^^ ○ <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> ^^^
Validate項目がないのに JSPに<html:javascript> があるとJavascriptエラーになる
Validate項目がないのに Actionクラスの @struts.action.validate が true だと ActionでServerExceptionが発生する * @struts.action * name="Form" * path="/URL" * scope="session" * input="/pages/validation-err.jsp" * validate="true" <-----------------ここ
JSPの<html:form>の中に検証対象の項目がないとJSPエラーになる→ 表示したくなくてもHiddenでJSPに持たせるのが吉
日付 [ 1999/12/31 ] -> dateで検証 時刻 [23]:[59]:[59].[999] -> requiredとintRangeで検証
<%@ page buffer="8kb" %> <%@ page autoFlush="true" %>になっているため。
<%@ page buffer="128kb" %> <%@ page autoFlush="false" %>
java.lang.Object | +--java.lang.Throwable | +--java.lang.Error | +--java.lang.Exception | +--java.lang.RuntimeExceptionシステム異常もRuntimeExcepiton?を継承して作らなくてはいけませんね
<global-exceptions> <exception type="java.lang.Error" path="/pages/system-error.jsp" key="SysError"/> </global-exceptions>なんてやってもStrutsからは無視される
1. reset() 2. HTTP-POSTに載っているパラメータを setXXX() で FormBeanに書き込む 3. validate()
操作 | ActionForm?#agreeCheckの状態 |
A画面でchekcboxをチェックしてsubmit | "true"(HTTP-REQUEST) |
確認画面でA画面に戻る | "true" |
A画面でcheckboxのチェックをはずしてsbumit | "true"(HTTP-REQUSETに、agreeCheckが無いので上書きされない |
操作 | ActionForm?#agreeCheckの状態 |
A画面でchekcboxをチェックしてsubmit | "false"(reset())->"true"(HTTP-REQUEST) |
確認画面でA画面に戻る | "true" |
A画面でcheckboxのチェックをはずしてsbumit | "false"(reset())->"false"(HTTP-REQUESTに該当項目がないので上書きされない) |
public ActionErrors validate(ActionMapping map, HttpServletRequest req) { ActionErrors errors = super.validate(map, req); if (errors == null) { errors = new ActionErrors(); } if (甲が乙で乙が丙で丙が丁){ errors.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.E03459")); } return errors; }
検証対象 | Validation |
null | 合格 |
"" | 合格 |
"1" | 不合格 |
"12" | 不合格 |
"123" | 合格 |
"1234" | 合格 |