[Rumble-jp-dev] Re: 新環境で

Zurück zum Archiv-Index

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が獲得できていないようです)。

何かわかりましたらお願いします。





Rumble-jp-dev メーリングリストの案内
Zurück zum Archiv-Index