Top / Struts / ActionのTIPS集

fowardするだけ

まずは基本。フォワードするだけ。

<action-mappings>
  <action path="/index"
      forward="/WEB-INF/jsp/index.jsp" />
</action-mappings>

と記述しておくことで、

http://hogehoge/[path]/index.do

というURLでindex.jspへアクセス可能となります。直接JSPを指定したくない場合に用いられますね。そもそもWEB-INF内のJSPには直接アクセスできないですし。

formを定義する

<form-beans>
  <form-bean name="LoginForm"
        type="org.apache.struts.validator.DynaValidatorForm">
    <form-property name="userId" type="java.lang.String" />
    <form-property name="pass" type="java.lang.String" />
  </form-bean>
</form-beans>
...
<action-mappings>
  <action path="/login"
      forward="/WEB-INF/jsp/index2.jsp" name="LoginForm" />
</action-mappings>

と記述しておきます。画面(JSP)では

<html:form action="/login" focus="userId" method="post">
  <div id="errmsg"><html:errors /></div>
  <table border="0" class="center">
    <tr>
      <td width="20%" align="right">ユーザID</td>
      <td align="left"><html:text property="userId"
        styleClass="inputStrImeDisabled" size="40" maxlength="20"
        tabindex="1" /></td>
    </tr>
    <tr>
      <td width="20%" align="right">パスワード</td>
      <td align="left"><html:password property="pass"
        styleClass="inputStrImeDisabled" size="42" maxlength="40"
        tabindex="2" redisplay="false" /></td>
    </tr>
    <tr>
      <td><br />
      </td>
    </tr>
    <tr>
      <td width="20%"></td>
      <td align="left">
      <html:submit property="loginButton" value="ログイン"
        styleClass="fButtons" tabindex="3" /></td>
    </tr>
  </table>
  <html:hidden property="url" />
</html:form>

としておくことで、テキストボックス付きのformになります*1。まだ/login(つまりindex2.jsp)にフォワードするだけですが。

次はいよいよアクションをかませます。

アクションを呼び出す

上の定義の

  <action path="/login"
      forward="/WEB-INF/jsp/index2.jsp" name="LoginForm" />

  <action path="/login"
      type="nu.mine.kino.actions.LoginAction" name="LoginForm" >
    <forward name="success" path="/WEB-INF/jsp/index2.jsp" />
  </action>

に変更します。すると遷移先がアクションクラスとなり、アクションクラス内で遷移先を制御することになります。たとえばアクションクラスを以下のようにしました。

package nu.mine.kino.actions;

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;

public class LoginAction extends Action {
  @Override
  public ActionForward execute(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    // TODO Auto-generated method stub
    System.out.println("hogehoge");
    return mapping.findForward("success"); <-forward nameのsuccessにあわせてある
  }
}

書き途中!

つづき

Struts/ActionのTIPS集2


この記事は

選択肢 投票
おもしろかった 26  
そうでもない 24  
Top / Struts / ActionのTIPS集

現在のアクセス:24442


*1 上のJSPにアクセス時に、/loginのaction-mappingにformがちゃんと(name属性で)定義されているかをチェックしているので注意しましょう。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-06-15 (火) 18:17:09 (1039d)