[Seasar-user:8996] [S2JSF]Aタグ利用時に、onclickが2回描画される。

Shin Tanimoto [E-MAIL ADDRESS DELETED]
2007年 7月 6日 (金) 20:21:31 JST


せろです。

S2JSF 1.0.25で、<a>タグに指定したonclick属性が
デプロイ後のHTML上では2回レンダリングされてしまいます。


■再現方法
たとえば、こんなリンクを作ると、
<a m:action="#{addAction.calculate}" onclick="alert('test');">Calculate</a>

こんなボタンになります
<a href="#"
onclick="alert('test');;clear__5Fid77();document.forms['_id77'].elements['_id77:_link_hidden_'].value='_id77:_id87';if(document.form
s['_id77'].onsubmit){document.forms['_id77'].onsubmit();}document.forms['_id77'].submit();return false;" id="_id77:_id87"
onclick="alert('test');">Calculate</a>

onclickが最初と最後の2回描画されているのが分かります。

通常は、大した問題にならないのかも知れませんが、
異常系とかクラスブラウザ対応時に、問題になりそうです。
(ていうか、なんか挙動が安定しなくて困ってます (^^; )


■原因
HtmlCommandLinkRendererで属性をレンダリングする際に、
(isJavascriptAllowedの時に)
独自で作ったonclickを描画した上で、全属性をレンダリングするためでしょう。


■対策
JsfConstantsに
ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE_ONCLICKなど、
onclickを描画しない属性配列をつくって、isJavascriptAllowedの時には
この属性をレンダリングすれば良いのかなと思います。


、、、ということで、今晩にでもそのように直しておこうと思いますが、良いですか? (^^;;

それでは




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