-
validationエラーの時は、
@Result(name = "input", location = "/inputError.jsp")に飛んでいきます。typeを書いてないので、dispacherで飛びます。
飛んでいった先では、メッセージコードに紐付くメッセージを表示したいです。でも、DBに入ってるメッセージを、jspから取るためには、メッセージコードをjspに書いておく・・・のはやめて、アクションに定義したメッセージコードで、DBから引っ張りたいですよね。ところが、パラメータをくっつけて送ろうとすると、怒られるのです。
@Result(name = "input", location = "/inputError.jsp?messageCode=E999")こんなのはダメ。
なので、
<s:property value="ApplicationErrorMessage"/>を書いておきます。Struts2は、遷移元のアクションの、getApplicationErrorMessageをコールして、ApplicationErrorMessageを取得しようとするので、アクションに以下のゲッターを作ります。
/** 入力エラー時のメッセージコード */ private final String validationErrMsgCode = "E999"; /** * 入力エラー時のアプリ固有メッセージを返します。 */ public String getApplicationErrorMessage(){ // TODO DAO生成 // TODO レコード取得 String message ; //TODO 表示文字列をセット return message; }なので、validationメッセージと、アプリ固有のエラーメッセージを混在表示するjspは、こうなります。
inputError.jsp
<%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <%@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=windows-31j"> <title>入力エラー</title> </head> <body> <!-- アプリ固有のエラーメッセージ --> <s:property value="ApplicationErrorMessage"/> <!-- validationメッセージ --> <s:fielderror /> <input type="button" name="" value="閉じる" onclick="self.close()"/> </body> </html>