import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; public class MessageAction extends Action{ public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) { //メッセージのリストをセットする(requestスコープ) ActionMessages messages = new ActionMessages(); //メッセージを保持するインスタンスを作成 /* * 普通の文字列だけのメッセージと、置換文字列が含まれる文字列を読み込みます。 * 置換部分を配列で指定する方法においては、置換部分は最大4つまでという規定があります。 * 置換文字列を配列で指定する方法、コンストラクタの引数にそのまま指定する方法と、二種類ある様子です。 */ ActionMessage mes1 = new ActionMessage("message.mes1"); ActionMessage mes2_1 = new ActionMessage("message.mes2", new String[]{"♪","うひw"}); ActionMessage mes2_2 = new ActionMessage("message.mes2", "■","うはwww"); //メッセージの登録 /* メッセージグループを複数指定する場合は、デフォルト設定であるActionMessages.GLOBAL_MESSAGE は使えないらしい(セットしたものが全部まとまって出てくるw)。 表示するメッセージが一個の場合はActionMessages.GLOBAL_MESSAGEを使う感じ? result.jspのコメントも参照のこと。 messages.add(ActionMessages.GLOBAL_MESSAGE, mes1); messages.add(ActionMessages.GLOBAL_MESSAGE, mes2_1); messages.add(ActionMessages.GLOBAL_MESSAGE, mes2_2); */ messages.add("Sample1", mes1); messages.add("Sample1", mes2_1); messages.add("Sample1", mes2_2); ActionMessage optMessage1 = new ActionMessage("message.opt1"); ActionMessage optMessage2 = new ActionMessage("message.opt2", "♪"); messages.add("Sample2", optMessage1); messages.add("Sample2", optMessage2); saveMessages(req, messages); //エラーメッセージのリストをセットする(requestスコープ) ActionMessages errorMessages = new ActionMessages(); //エラーメッセージを保持するインスタンスを作成 ActionMessage errMes1 = new ActionMessage("error.mes1", "にゃんにゃん"); errorMessages.add(ActionMessages.GLOBAL_MESSAGE, errMes1); saveErrors(req, errorMessages); //遷移先指定 return map.findForward("success"); } }