Laplace
lapla****@csc*****
2004年 3月 12日 (金) 00:54:36 JST
laplaceです。 いろいろご指南有難うございます。 > > 今の問題は > > <action path="/RobotDetailIndex"> > > <forward path="tiles.RobotDetailTop"/> > > </action> > > じゃないかと思っているのですが、 > > この記述で問題(NullPointerException)は起きないでしょうか? > > select-forwardのpropertyに適当なフィールド(どうせ中身を見ないので > 何でもいい。ここではretMessageフィールドを選択)を指定し、 > <forward-default>要素のみを記述しています。 > これで常にsuccessが実行されます。 > というような感じで、<forward-select>要素を書けば解決すると思います。 黒澤さんからのメールでselect-forwardを記述すると stadium.bl.robot.xxxがないとか怒られちゃいました。 アクションは発生しないはずなので、あれこれ削除していった結果 とりあえず動作する記述は、下記のようにしたものでした。 <action path="/RobotDetailIndex" scope="request" forward ="tiles.RobotDetailTop"/> <forward path="tiles.RobotDetailTop"/> のpathが余分だったということでしょうか?? で、ついにエラーが出ずに表示!と思いきやブラウザは真っ白でした。 原因は文字コードUTF-8のようで、Layout〜.jspの先頭を <%@ page pageEncoding="Windows-31J" %> としていたのが原因でした。 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="Windows-31J" %> じゃないとダメなんですね。ミスった・・・ こんなことになったときの参考にしてください。 > これはaction タグのscope 属性によるのだと思います。 > scope="request"であれば問題ないと思います。 あと伊藤さんから教えていただいた、 スコープではうまくいっていないようです。 RobotDetailIndex.do?robot_version_id=4 のrobot_version_id=4が各アクションに渡されていないようです。 何かまずい記述や抜けている記述がありますでしょうか? テスト段階なので同じ物を呼んでいる形になっていますが、 各記述は下記のようになっています。 <form-bean name="RobotDetail" type="org.apache.struts.action.DynaActionForm"> <form-property name="retMessage" type="java.lang.String"/> <form-property name="robot_version_id" type="java.lang.String"/> <form-property name="robot_detail" type="java.util.List"/> </form-bean> <action path="/RobotDetailIndex" scope="request" forward ="tiles.RobotDetailTop"/> <action path="/RobotDetail" name="RobotDetail" type="jp.ossc.tstruts.action.web.EJBAction" scope="request" input="failure" parameter="Robot#RobotDetail"> <interceptor className="stadium.web.actions.LocaleInterceptor"/> <select-forward property="retMessage"> <forward-default name="success"/> </select-forward> <!-- <forward name="success" path="tiles.RobotDetail"/> --> <forward name="success" path="RobotDetail.jsp"/> </action> <definition name="tiles.RobotDetailTop" path="RobotDetailTop.jsp"> <put name="title" type="resource" value="RobotDetail.title"/> <put name="menu" type="path" value="/Menu.do"/> <put name="RobotVersion" type="action" value="RobotDetail.do"/> <put name="RatingChart" type="action" value="RobotDetail.do"/> </definition> RobotDetailの内容が2つ表示されたら成功のはず。 ちなみにRobotDetail.jspをLayout.jspに組み込んだ時には、 テーブルが表示されてましたので、SQL等へのアクセスは大丈夫と思いますが、 今回のパターンですとテーブルのタイトルが表示されるだけで、 テーブルの内容が表示されません(Listが獲得できていないようです)。 何かわかりましたらお願いします。