こんにちは。
こちらの質問は
https://teratail.com/questions/28927
の続きになります。
A-pZさんの参考URLを見ながらstruts2-archetype-starterを
mavenからプロジェクト作成しTomcat8で実行したところ
IndexActionは正常に実行されました。
しかし、index画面からSubmitボタンを押下すると404エラー(クラスが見つからない)で
Apacheの画面になりStruts.xmlの
<action name="helloWorld" class="helloWorldAction">
<result name="input">/jsp/index.jsp</result>
<result>/WEB-INF/jsp/helloWorld.jsp</result>
</action>
をIndexActionに合わせて
<action name="helloWorld" class="local.sample.HelloWorldAction">
<result name="input">/jsp/index.jsp</result>
<result>/WEB-INF/jsp/helloWorld.jsp</result>
</action>
に修正することでクラスがみつからないというエラーは解決しました。
つぎに、同様にindex画面で
パラメータを正常に入力せずにSubmit(HelloWorldActionのexecute)すると
「HTTP????? 404 - /struts2-archetype-starter/jsp/index.jsp」とエラーになりました。
試行錯誤してみると、HelloWorldAction.javaの39行目あたりにある
@RequiredStringValidator(message = "Please enter a name", trim = true)
をコメントアウトすると404エラーにならずに次の画面が表示されることがわかりました。
これらのエラーが、私のプロジェクトの作成方法が間違っているのか、
それともstarterなのであえてエラーのままにしているのかわからないのですが
間違った対応だと思うので正しい対応をご存知でしたら教えてほしいです。
ちなみにその後、ログを見るとvalidateExecuteが見つからないとあったので
メソッドを作ってデバッグしてみるとvalidateExecuteを通過することは確認できたのですが
出力されるエラーは同じ404でした。
public String validateExecute() throws Exception {
this.name="a";
return SUCCESS;
}
正しい動作は、「入力でエラーがあればエラーメッセージをセットして入力画面をリロードする」だと思うのですが、そのような動きにする方法をまず教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/11 15:20 編集
2016/03/14 06:06