遷移先を動的に変更
例えば新規登録と編集で、同じ入力画面を使いたいけど、入力画面からの遷移先を新規登録の場合と編集の場合で変更したい場合など。取り敢えず意図していたことは出来たのでメモ。
// EmployeeAction.java /** 新規登録画面表示 */ public ActionResult create() { // セッションにモード(新規登録)を格納 sessionScope.put("mode", "create"); return new Forward("/employee/employeeEdit.html"); } /** 編集画面表示 */ public ActionResult edit() { // セッションにモード(編集)を格納 sessionScope.put("mode", "edit"); employeeDxo.convert(userService.selectByEmployeeNo(this.employeeNo, this); return new Forward("/employee/employeeEdit.html"); }
<!-- employeeEdit.mayaa --> <m:beforeRender> var confirmPath = ''; if (session.mode == 'create') { confirmPath = 'createConfirm'; } else if (session.mode == 'edit') { confirmPath = 'editConfirm'; } </m:beforeRender> <!-- 遷移先の指定 --> <t:form m:id="inputForm" action="${request.getContextPath()}/employee/${confirmPath}" method="POST" value="${action}"/> <!-- 表示の制御 --> <m:with m:id="employeeNo"> <m:if test="${session.mode == 'create'}"> <t:input type="text" name="employeeNo" maxlength="20" size="20"/> </m:if> <m:if test="${session.mode == 'edit'}"> <m:write value="${action.employeeNo}"/> <t:input type="hidden" name="employeeNo"/> </m:if> </m:with>
下の方の
同じことをやるにしても、もっと他に良い方法があるはずなんだけど。うーん。