- PR -

jspで動的なaction属性

投稿者投稿内容
urbb
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-05-19 10:35
include時にsubmitのaction属性を動的に実現したいです。
単なる文字列パラメータ渡しは下記でいけるのですが、
action属性に設定したりする事はできないようです。
---------------------------------------------------------------------------
<jsp:include page="test.jsp" flush="false">
  <jsp:param name="param1" value="param"/>
</jsp:include>

(受け側)
<%= request.getParameter("param1") %>
---------------------------------------------------------------------------

どのようにすれば実現できるでしょうか?

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-05-19 11:06
コード:
<form action="<%= request.getParameter("param1") %>">
...
</form>


で、できませんか?(エスケープ等が必要ですが・・・)
何をどう試して、どんなエラーが出たのか等書いていただけると、
回答しやすいです。
urbb
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-05-19 11:31
早急のご回答ありがとうございます。
具体的には受け側jspで以下のように記述しました。
-----------------------------------------------
<s:form>
<s:submit type="image" value=""
action="<%= request.getParameter("param1") %>"
src="aaa.png"
onmouseover="this.src='bbb.png';"
onmouseout="this.src='aaa.png'" />
</s:form>
-----------------------------------------------
結果はボタンすら表示されない状況です。
ちなみにaction属性を固定指定でやるとうまく動作します。
urbb
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-05-19 11:40
追記です。エラー内容は以下です。
--------------------------------------------------------
致命的: サーブレット default のServlet.service()が例外を投げました
org.apache.jasper.JasperException:
TLD又はタグファイル中のattribute指示子に従って属性actionは
どんな式も受け付けません
--------------------------------------------------------
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-05-19 12:30
s:submitが何のタグライブラリか知りませんので、
内部でEL式が使えるか知りませんが、

コード:
action="${param.param1}" 



で実現できませんか?
urbb
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-05-19 15:17
>s:submitが何のタグライブラリか知りませんので、

失礼しました。struts2を使っています。
prefix「s」はstruts-tagsのタグライブラリです。

>action="${param.param1}"

を記述してみましたが、

There is no Action mapped for namespace / and action name ${param.param1}.

とエラーになってしまいました。。
(アクションマッピングされていない?)

単純に同一ボタンのaction属性を可変にしてjspを共用したかっただけ
なのですけど、そう簡単にはいかないようですね・・。
画面の問題なので、jsp、struts.xmlのみで解決したいのですが、
他に何か手段は考えられますでしょうか?

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-05-19 16:48
TLDを確認しましたが、submitタグのaction属性の、
rtexprvalueがfalseになっていましたので、
EL式やスクリプトレットでの設定はできないようですね。

JavaScriptで対応するというのはいかがでしょう。
onsubmit属性で指定した関数の中で、
対象フォームのactionを書き換えてみてはいかがでしょうか?
これなら、
コード:
<script>
function onsubmit_test(){
    this.action = "{$param.param01}";
}
</script>


という感じのコードで対処可能かと思います。
(サンプルなんでエスケープとかしてません)
urbb
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-05-20 09:50
返信遅れまして申し訳ありません。。
いろいろ試行錯誤しておりました。
未だに実現できておりませんが。。

javascriptによってaction属性を設定するやり方ですが、
-------------------------------------------
TLDによると、タグ submit の属性 onsubmit は無効です
-------------------------------------------
というエラーが出ます。

記述の問題なのでしょうか?
-------------------------------------------
onsubmit="return onsubmit_test()"
or
onsubmit="onsubmit_test();return false;"
-------------------------------------------

スキルアップ/キャリアアップ(JOB@IT)