- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
#contents
**fowardするだけ [#q3d9c061]
まずは基本。フォワードするだけ。
<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を定義する [#tc0aa38b]
<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になります((上のJSPにアクセス時に、/loginのaction-mappingにformがちゃんと(name属性で)定義されているかをチェックしているので注意しましょう。))。まだ/login(つまりindex2.jsp)にフォワードするだけですが。
次はいよいよアクションをかませます。
**アクションを呼び出す [#wfd617f6]
上の定義の
<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にあわせてある
}
}
書き途中!
**つづき [#vcf1ca16]
Struts/ActionのTIPS集2
----
この記事は
#vote(おもしろかった[22],そうでもない[9]);
#vote(おもしろかった[23],そうでもない[9]);
#topicpath
SIZE(10){現在のアクセス:&counter;}