- PR -

値バインドの記述について

1
投稿者投稿内容
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-07-18 17:39
Strutsを使用して、値バインドを記述することは可能でしょか。
普通のEL式を使って、Formのデータにアクセスすることはできるます。
${form.name}
この方式ではなく、Formの持っているオブジェクトの属性にアクセスしたいのですが、その方法が分りません。イメージはこんな感じです。
${form.dto.name}
JSFの値バインドを使うとできるっぽいのですが、Strutsを使った場合の実現方法についてどなたか分かりましたら教えてください。※strutsは1.3.8を使用しています。

よろしくお願いします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-07-18 18:25
引用:

キタキツネさんの書き込み (2007-07-18 17:39) より:
普通のEL式を使って、Formのデータにアクセスすることはできるます。
${form.name}
この方式ではなく、Formの持っているオブジェクトの属性にアクセスしたいのですが、その方法が分りません。イメージはこんな感じです。
${form.dto.name}


普通のELで${form.dto.name}も扱えますよ?
そういう意味ではないのですか?
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-07-18 20:23
あしゅさん。返答ありがとうございます。
まさにあしゅさんの言われている通りのことをやりたいと思っています。
サンプルを作っているのですが、${form.name}は表示されるのですが、${form.dto.name}が表示されません。

環境は以下のような感じです。
tomcat5.5
jdk5
jsp2.0
struts1.3.8

formにdtoのsetter,getter、dtoにnameのsetter,getterは作成済みです。試しにdtoのgetterに直接文字を返却させてみましたが、やはり何も表示されませんでした。
JSPでは以下のように書いています。
<@ taglib uri="http://java.sun.com/jstl/core" prefix="sunc" %>
<sunc:out value="${form.dto.name}" />

以上です。よろしくお願いします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-07-18 20:49
まずは<sunc:out>抜きでEL式を書いて出力されているか確認しましょう。

コード:
${form}
${form.dto}
${form.dto.name}


それぞれどうなりますか?

直接記述して出力されるのにoutを使うと出力されないなら、outの方の設定が誤っているとか、そういうことになるでしょうし。
一気に動かさずにパーツにわけて動作確認しましょう。

言語仕様的には可能なので、EL式の記述なり、型なりgetter, setterなりのどこかにミスがある。
getter,setterのアクセスレベルがpublicになっていないとかありませんよね?
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2007-07-18 22:37
空文字になるってことはformのdtoがnullとか?
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-07-19 22:43
みなさん回答ありがとうございました。無事表示することができました。
結局、原因はDTOがNullになっていたためでした。(お恥ずかしい。。)

これとは別件でもう一件質問してもよろしいでしょうか?
テキストフィールドと関連づけて、表示だけでなく、Servlet側へリクエストが来たときにELで指定した属性へ値が設定されている状態にすることは可能でしょうか。
こんな感じです。
<html:text property=${form.dto.name}" />
上記テキストフィールドに値を入れてSubmitし、サーバ側ではform.getDto().getName()で値を参照したいと思っています。
JSFだと、<h:inputText value=#{form.dto.name} />で出力できるのですが、これをstrutsでやる方法を教えて頂けないでしょうか。
よろしくお願いします。
1

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