- - PR -
Strutsタグのについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-06-01 17:14
お世話になります。すいません。Strustのタグの仕様なのですが、
<bean:define id="num1" name="test1" type="java.lang.Integer" /> <bean:define id="num2" name="test2" type="java.lang.Integer" /> <logic:equal name="num1" value="<bean:write name="num2"/>" > <bean:write name="num2" /> </logic:equal> とすると、「等号記号が必要です」というエラーが発生します。 Integer同士の比較なのですが、どうしてエラーが出るのか分かりません。 色々検証して <logic:equal name="num1" value="<%= num2.toString() %>" > <bean:write name="num2" /> </logic:equal> とすると正常に処理されますが、上下のコードには何か違いがあるのでしょうか。 上下ともオブジェクト同士の比較だと認識しているのですが、 間違いでしょうか。 |
|
投稿日時: 2007-06-01 17:25
あんまり詳しくないのですが、たぶんこういうことじゃないでしょうか。
<logic:equal name="num1" value="<bean:write name="num2"/>" > "(ダブルクォーテーション)で囲まれると固定文字になる なので実際には num1の中身とnum2の中身の比較 ではなく num1の中身と<bean:write name=(という文字列) での比較になるのではないでしょうか |
|
投稿日時: 2007-06-01 17:29
<logic:equal name="num1" value="<bean:write name="num2"/>" >
Strutsタグの中にStrutsタグを入れられなかったと思います。 上記の場合だと、valueには ""で囲まれた文字列『<bean:write name=』が格納されて その文字列と name指定されたものが判定されてことになると思います。 (そもそも、『<bean:write name=』 以降の『num2"/>"』が logic:equalの構文に 当てはまってないので、エラーになると思いますが....) ですので、bean:defineで定義した変数の値をStrutsタグで使用したい場合は 初心者マークさんが2つ目に書かれているように <logic:equal name="num1" value="<%= num2.toString() %>" > と、JSPの式などで指定あげれば うまくいくと思います。 追記: <logic:equal name="num1" value="<bean:write name="num2"/>" >が <logic:equal name="num1" value="<bean:write name='num2'/>" >とした場合でも valueには文字列『<bean:write name='num2'/>』が格納され、num1と比較となると思います。 (Strutsタグの中にStrutsタグを....の理由付けがちょっとずれてたので追記しました。) [ メッセージ編集済み 編集者: Daimyo_Jin 編集日時 2007-06-01 17:52 ] |
1