- - PR -
strutsのForwardActionによるページ遷移
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-24 15:11
こんにちは。
現在Actionクラス、Formクラスを作らず、struts-config.xmlにForwardActionを 記述することによってページ遷移を実現したいと思っていろいろやっているんですが、 実現できなくて困っています。 簡単なサンプルとして、 <Page1.jsp>(submitボタンが一個あるだけのjspファイル)
<Page2.jsp>(無事ページの遷移ができたということを見るためだけのjsp)
をつくり、struts-configに
を追加してPage1.jspを呼び出したところ、 org.apache.jasper.JasperException: Cannot retrieve definition for form bean null というエラーになります。 おそらくactionにname属性を追加してやればいいのだろうとは思うのですが、 それだと無駄なformクラスを作ることになるので、避けたいと思っています。 皆様のお知恵を貸してください。 #すみません、jspの記述に誤りがあったので修正しました。 [ メッセージ編集済み 編集者: どら吉 編集日時 2004-03-24 15:16 ] | ||||||||||||
|
投稿日時: 2004-03-24 15:31
そんなあなたに org.apache.struts.action.DynaActionForm | ||||||||||||
|
投稿日時: 2004-03-24 20:46
ふーばーさん>
ありがとうございます。 ということは、やっぱりactionにname属性は持たせる必要があるということなんでしょうか・・・。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6447&forum=12&start=0 こちらのスレッドで、name属性を指定せずにページの遷移ができていたようなので、 何かこちらの状況に間違いがあるのだろうと思っていたのですが・・・。 | ||||||||||||
|
投稿日時: 2004-03-24 21:24
ActionFormは不要です。strutsのサンプルであるstruts-blankのstruts-config.xml ファイルでも見てみてください。ForwardAction.javaのソースコードもシンプルな もんです。興味がわけば見てみるとよいと思います。
ということは、submitボタンを押すことすらできないってことですから、 ForwardActionを使う使わない以前の問題ですね。 | ||||||||||||
|
投稿日時: 2004-03-25 10:33
<html:form> タグを使う場合は、ActionForm (name 属性)は必須では? どら吉さんは ・<html:form> を使うJSPを作るんだけど ActionForm クラスを作りたくない。 ・ForwardAction を使って画面遷移がしたい。 どっちをしたいんですか? | ||||||||||||
|
投稿日時: 2004-03-25 11:13
ふーばーさん>
そ、そうなのですか・・・? やりたいことは「Page1.jspからsubmitボタンでPage2.jspに移動」 「移動先はPage1.jspに指定ではなく、struts-configに記述する」の2点です。 submitボタンを使うためにはformタグでネストする必要があるはずですが、 formには何の入出力もないので、ActionFormの拡張クラスは作りたくないのですが、 そこがそもそもの認識間違いなのでしょうか? aaさん>
サンプルとにらめっこしてみたのですが、今回やりたいことは formタグからstruts-configに記述してあるactionを呼び出すことなので、 サンプルとは少しちがうようです。(サンプルはjsp内redirect->struts-config内forward ->struts-config内action という風に呼んであるので) 助言ありがとうございました。 | ||||||||||||
|
投稿日時: 2004-03-25 11:31
えーっとですね、「そもそも」の話をすると、入力(POSTデータ)がないのに <form> を使う(submit を使う) というのがおかしいんです。リンク(<a>)で もいいでしょ?そうなると、FowardAction 云々という話になるんですよ。 で、どうしても submit でやりたい場合は、struts-config.xml に name 属性で ActionForm を指定しなければいけないんですが、必ずしもクラスを作る必要はなく、 DynaActionForm を使っても構いません。(これが私の書き込みの真意)
これだけ見ると、<html:link> で global-forward を指定するのが一番すっきり 実現できると思うんですけどね。 | ||||||||||||
|
投稿日時: 2004-03-25 11:44
submitだとエンターキーでも反応するからじゃないですかね。
私だったら、global-forward書いて、tagLib使わないで Formタグを自分で書きますね。 | ||||||||||||
