[Seasar-user:4901] Re: imgタグのid属性について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 10月 25日 (水) 11:20:25 JST


米林です。

From: "wasabi" <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, October 25, 2006 11:06 AM

> 一覧内の画像にマウスカーソルが乗ったとき、離れたときに画像を切り替える
> という処理を実装しています。
> 一覧を作成するforEachのindexを利用してimgタグのid属性を指定したいのですが、
>
> 『id="detail_btn#{index}"』のようにid属性を指定すると落ちてしまいます。
>
> <img m:inject="h:graphicImage"
> m:url="/images/detail_btn.jpg"
> src="../images/detail_btn.jpg"
>      id="detail_btn#{index}"
>      onMouseOver="SetOverimage('xxxxxx','detail_btn#{index}')"
>      onMouseOut="SetOutimage('xxxxxx','detail_btn#{index}')" >
>
> ↓↓↓発生する例外
> java.lang.IllegalArgumentException: Subsequent character is invalid
> javax.faces.component.UIComponentBase.validateId(UIComponentBase.java:666)
> javax.faces.component.UIComponentBase.setId(UIComponentBase.java:144)
> javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:375)
> javax.faces.webapp.UIComponentTag.createChild(UIComponentTag.java:382)
> javax.faces.webapp.UIComponentTag.findComponent(UIComponentTag.java:261)
> javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:138)
>
org.seasar.jsf.processor.TagProcessorImpl.processTag(TagProcessorImpl.java:224)
> org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:217)
> ・・・・・続く
>
> id属性にもindexが使用できるようにしていただくことは可能でしょうか。
> 以上ご回答の程よろしくお願い致します。

JSFの仕様でid属性にEL式は使用出来ません。
ですので、下記のように画像切り替えを検討
して頂けますでしょうか?
# 特にid属性を必要としない方法です

[thisを使用]
onMouseOver="this.src='hoge.gif'"
onMouseOut="this.src='foo.gif'"

[SetOverimage, SetOutimage関数を以下のように変更]
function SetOutimage(xxx, imgObj){
  imgObj.src='../images/detail_btn.jpg";
}
function SetOverimage(xxx, imgObj){
  imgObj.src='../images/用意した画像.jpg";
}

使用バージョンがS2JSF1.0, 1.1系ともに使用出来るはずです。

宜しくお願いします。
---
米林 正明
[E-MAIL ADDRESS DELETED]




Seasar-user メーリングリストの案内