- PR -

struts開発にて特定画面だけをsubWin表示する方法

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/03/16
投稿数: 2
投稿日時: 2005-03-16 10:50
別画面にforwardするhtmlタグが、うまく動作せずに悩んでいます。
もちろん自分でも引き続き調べますが、
下記の情報で何かまずい部分にお気づきでしたら ぜひアドバイスお願い致します。


●やりたいこと。
 "ある特定の画面のみ"、画面遷移ではなく別ウィンドウで一覧表示をしたい。
 ボタンクリックで選ばれているIDを取得し、そのIDをもとに一覧を作成します。

●Struts-config.xmlの Global forwardsの定義状態
 <glocal-forwards type="sFare.action.SAction"> <!-- タイプ指定しなくても同じエラーです -->
<forward name="userList" path="/UserList.jsp" /> <!-- 本来は、jspではなく/s03.doとしたいところですが、手始めにjspとしています。 -->
 </glocal-forwards>

●jpsの中で別画面表示のjavascriptを記述
 wd = window.open("<html:rewrite forward="userList"/>","", "status=no,menubar=no,toolbar=no, titlebar=no, width=430,height=580");

●状況
 <html:rewrite forward="userList">で、うまくファイルを取得できない状態。
 <html:rewrite page=〜>でjspやアクションを指定すれば、動作する。
 → global forwardsの設定がうまくいかないように考えて
   あれこれ設定を試しているのですが、うまくいきません。

●エラー内容
javax.servlet.ServletException: Cannot create rewrite URL: java.net.MalformedURLException: Cannot retrieve ActionForward named userList
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
org.apache.jsp.BusFare_jsp._jspService(BusFare_jsp.java:216)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


●Struts-config.xmlのactionクラスのマッピング状態(念のため書いておきます)
<action
attribute="s03Form"
input="/s03.jsp"
name="s03Form"
path="/s03"
type="sFare.action.SAction"
unknown="true"
validate="false">
<forward name="success" path="/sFare.jsp" />
<forward name="userList" path="/UserList.jsp" /><!-- 画面遷移のなごり。これはうまくいく -->
</action>
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-03-16 11:39
るぱんです。

HTML側のJavaScriptでPOPUPさせて呼び出すものではないでしょうか?
StrutsにPOPUPの判断をさせるのは酷だと思います。

リンクから遷移の場合
コード:
<A href="url" target="_blank">



ボタンからOnClickの場合
コード:
<SCRIPT>
<!--
test(form){
    form.action="url";
    form.target="_blank";
    form.submit();
}
-->
</SCRIPT>
<FORM>
    <INPUT type="button" onClick="test(this.form);">
</FORM>


こんなかんじでしょうか?
未記入
会議室デビュー日: 2005/03/16
投稿数: 2
投稿日時: 2005-03-16 11:59
るぱん様、早速のお返事どうもありがとうございます。

アドバイスいただいた
>test(form){
> form.action="url";
> form.target="_blank";
> form.submit();
>}
というコードは思いつきませんでした。
ここで_blankと指定すれば、ボタンごとに遷移か別画面かを切り替えられるのですね!

とても勉強になります。

自力では、configでアクションを切り分け、
それをpage指定することによって希望の動作を作り込めたのですが、
るぱん様の方法を試させていただこうと思います。スマートですものね。

どうもありがとうございました。
1

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