Naoki Kurosawa
n-kur****@nri*****
2004年 3月 11日 (木) 15:06:18 JST
黒澤です。 > java.lang.NullPointerException > at > jp.ossc.tstruts.ExtendRequestProcessor.processSelectForward(ExtendRequestPro > cessor.java:392) がまだ起きているということなんですよね? > 今の問題は > <action path="/RobotDetailIndex"> > <forward path="tiles.RobotDetailTop"/> > </action> > じゃないかと思っているのですが、 > この記述で問題(NullPointerException)は起きないでしょうか? ・BLからは「どのforwardを実行するのかを返してやる手段がない」かつ、 ・プロトタイプの時のように、必ずActionクラスを作ってその中からEJBを 呼ぶのではなく、Strutsが直接BLを呼ぶ ので、「どのforwardを実行するのか」を決定するためのforward-selectという 機能があります。 これは、BLからの戻りActionFormの内容によって判断します。 <action path="/RegisterUser" name="UserRegistrationForm" type="jp.ossc.tstruts.action.web.EJBAction" scope="request" input="failure" parameter="User#RegisterUser"> <select-forward property="retMessage"> <forward-value value="success" name="success"/> <forward-default name="failure"/> </select-forward> <forward name="success" path="tiles.UserRegistered"/> <forward name="failure" path="tiles.UserRegistrationForm"/> </action> 以上の記述は、ActionFormのretMessageというフィールドに"success"という 文字列が入っていたら <forward name="success" path="tiles.UserRegistered"/> を実行し、それ以外は <forward name="failure" path="tiles.UserRegistrationForm"/> を実行します。 成功も失敗もなく、常にひとつの遷移先しかない場合、 <action path="/CategorizedRobots" name="CategorizedRobotsForm" type="jp.ossc.tstruts.action.web.EJBAction" scope="request" parameter="Robot#CategorizedRobots"> <select-forward property="retMessage"> <forward-default name="success"/> </select-forward> <forward name="success" path="tiles.CategorizedRobots"/> </action> というようにします。 これは、 select-forwardのpropertyに適当なフィールド(どうせ中身を見ないので 何でもいい。ここではretMessageフィールドを選択)を指定し、 <forward-default>要素のみを記述しています。 これで常にsuccessが実行されます。 というような感じで、<forward-select>要素を書けば解決すると思います。 To:松野さん 松野さんが担当してるところじゃないですか。 Stacktraceでぴぴっと来なきゃ。 -- Naoki Kurosawa <naoki_kuros****@ybb*****>, <n-kur****@nri*****> Sharpen up JAVA skills. - Robocode Rumble-JP Project - http://rumble-jp.sourceforge.jp/ http://robocode.ddo.jp/rumblejp/