×
<!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" | 合格 |