- PR -

JSPでリンクタグの書き方について

1
投稿者投稿内容
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-28 20:39
JSPのiterateタグ内で以下のようなリンクを生成したいのですがどうしたらlinkタグはどのように記述したらよろしいのでしょうか?

<a href="/DBAsystem/SelectRenew.do?selectCode=00045" id="link1">選択</a>
<a href="/DBAsystem/SelectRenew.do?selectCode=00046" id="link2">選択</a>
<a href="/DBAsystem/SelectRenew.do?selectCode=00047" id="link3">選択</a>

『a href』内の『id="link?"』の部分が上手く生成されず

<a href="/DBAsystem/SelectRenew.do?selectCode=00045">選択</a>

のようになって困っています。

どうかよろしくお願いします。

[ メッセージ編集済み 編集者: カイト 編集日時 2004-07-28 20:41 ]
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-07-29 08:48
カイトさん、こんにちは。米山@クロノスです。

引用:

カイトさんの書き込み (2004-07-28 20:39) より:


『a href』内の『id="link?"』の部分が上手く生成されず

<a href="/DBAsystem/SelectRenew.do?selectCode=00045">選択</a>

のようになって困っています。




<a>タグのid属性が生成されていないということですが、linkタグの適切な属性は指定できていますか?
http://struts.apache.org/userGuide/struts-html.html#link
「適切な」という意味は、カイトさんが望んでいるid属性の生成を行うために必要な、という意味です。

#(JSPのというよりも)Strutsのiterateタグ内でlinkタグを使用していると想定していますが間違っていたら申し訳ありません。



[ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2004-07-29 08:50 ]
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-29 11:14
米山@クロノスさん、ありがとうございます。

Strutsのiterateタグ内でlinkタグを使用している>
その通りです。説明不足で申し訳ありませんでした。

教えていただいたサイトを読ませていただき
 <html:link action="/SelectRenew" paramId="selectCode" paramName="selectCode" styleId="index" >選択</html:link>
と記述したところ
 <a href="/DBAsystem/SelectRenew.do?selectCode=00047" id="index">選択</a>
というようにid属性が生成されるようになりました。

しかし、まだ
 <a href="/DBAsystem/SelectRenew.do?selectCode=00045" id="link1">選択</a>
 <a href="/DBAsystem/SelectRenew.do?selectCode=00046" id="link2">選択</a>
 <a href="/DBAsystem/SelectRenew.do?selectCode=00047" id="link3">選択</a>
というようなid属性を通し番号で生成することが出来ません。

先ほどからいろいろと試しているのですが上手く出来ません。
iterate内でこのidを動的につける方法をご存知ではないでしょうか?

[ メッセージ編集済み 編集者: カイト 編集日時 2004-07-29 11:18 ]

[ メッセージ編集済み 編集者: カイト 編集日時 2004-07-29 11:18 ]
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-07-29 11:36
引用:

カイトさんの書き込み (2004-07-29 11:14) より:

iterate内でこのidを動的につける方法をご存知ではないでしょうか?



カスタム・タグの属性には動的な値を指定することが可能です。
# 正確にはTLDファイルの該当タグ定義において、<rtexprvalue>エレメントにtrueの値を指定した場合のみ可能

struts-html.tldファイルのlinkタグの定義を見てください。
上記エレメントがtrueになっているので、可能ですね。

つまり <%= %> を用いてstyleId属性の値を動的に指定することが可能です。
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-29 12:04
iterateタグを
 <logic:iterate id="SearchSQL" name="result" scope="request" indexId="index">
のように記述し、linkタグを
 <html:link action="/SelectRenew" paramId="selectCode" paramName="selectCode" styleId="<%=index %>" >選択</html:link>
と記述しました。

しかし、

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /pages/DbRetResult.jsp の中の行: 180でエラーが発生しました

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file

C:\ApacheGroup\eclipse\workspace\DBAsystem\DBAsystem\work\org\apache\jsp\pages\DbRetResult_jsp.java:517: org.apache.struts.taglib.html.BaseHandlerTag の setStyleId(java.lang.String) は (java.lang.Integer) に適用できません。
_jspx_th_html_link_0.setStyleId(index );

となり、コンパイルが通りませんでした。これはindexIdのindexの型がInteger型で、StyleIdがString型しか駄目ということでしょうか?
この場合、型を合わせるのにどのような方法があるのでしょうか?
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-07-29 12:32
引用:

カイトさんの書き込み (2004-07-29 12:04) より:

コンパイルが通りませんでした。これはindexIdのindexの型がInteger型で、StyleIdがString型しか駄目ということでしょうか?



少し違います。
要はカスタム・タグ実装でのsetStyleId()メソッドがString型を受け取るように定義されているので直接Integer型を渡せないということです。

引用:

この場合、型を合わせるのにどのような方法があるのでしょうか?



<%= %> は out.print(・・・); と同義なので、・・・の部分には通常のJavaの構文ルールが適用されます。
通常のJavaコードで型を変換する場合を思い出してください。それを適用すればOKです。

が、カイトさんのやりたいことを考えると、もう少し楽な方法もありますが。。。



[ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2004-07-29 12:33 ]
カイト
会議室デビュー日: 2004/07/12
投稿数: 11
投稿日時: 2004-07-29 13:02
ありがとうございます。

<html:link action="/SelectRenew" paramId="selectCode" paramName="selectCode" styleId="<%=index.toString() %>" >選択</html:link>

の様に記述したところ、うまくいきました。

教えてもらうより自分で考えた方が自分の力になると思うので、『もう少し楽な方法』というのはこれから自分で考えていきたいと思います。

こんな初心者に付き合っていただき、ありがとうございました。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-07-29 13:23
引用:

カイトさんの書き込み (2004-07-29 13:02) より:

教えてもらうより自分で考えた方が自分の力になると思うので、『もう少し楽な方法』というのはこれから自分で考えていきたいと思います。



そうですね。
考える力をつけていくことが大切ですので。

※ それほど複雑なことではなく「自動型変換を利用する」だけのことですが。。。
1

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