[Seasar-user:13929] Re: THtmlFormのClientId

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 4月 24日 (木) 18:53:04 JST


米林です。
返事がかなり遅れてすいません。

ちなみに、JavaScriptを使ってaタグでPageクラスのActionを
呼べればOKでしょうか?

もし、h:commandLinkを使用しなくても良ければ以下の方法で
実現可能です。

http://d.hatena.ne.jp/yone098/20070427/1177638981


よろしくおねがいします。

----- Original Message ----- 
From: "鈴木 順" <[E-MAIL ADDRESS DELETED]>
Sent: Tuesday, April 15, 2008 10:18 PM

>
> お世話になっております。鈴木です。
>
> TeedaExt1.0.13を利用しております。THtmlFormのClientIdに関してです。
> aタグクリック時にPageクラスのdoXXXを呼びたい要件があります。
> TeedaExtではサポートされていないので、
> 以下の様に毎度の如くhtmlにJSPをそのまま書いております。
>
> <h:commandLink action="#{add_addPage.doOnceCalculate}" value="btn" />
>
> 今までは
> <component
class="org.seasar.teeda.core.render.JsfSpecComponentIdLookupStrategy"/>
> を利用しておりましたが、
> TeedaにもFileUploadなど実装されたのでTomahawkを廃止しようと考え、
> <component
class="org.seasar.teeda.core.render.DefaultComponentIdLookupStrategy">
> に変更しました。
> これからajaxなどを多用したいので、id=clientIdの方が良いとも考えております。
> しかし、この変更を行った途端上記commandLinkが動作しなくなりました。
> (クリック後にjavaScriptエラーが起ります)
>
> ちょっと中を見てみたのですが問題は、
> THtmlFormがFormクリア用のJavaScriptを生成する際と
>> commandLinkがそのScriptを使用するScriptを生成する際に、
> THtmlForm自体のClientIdが違うものになり、
> Script名称に齟齬がおこっている事が問題だと分かりました。
>
> 具体的には、
> org.seasar.teeda.core.render.html.HtmlFormRenderer
>> renderClearHiddenCommandFormParamsFunctionの
>         String functionName = JavaScriptUtil
>                 .getClearHiddenCommandFormParamsFunctionName(formName);
>> org.seasar.teeda.core.render.html.HtmlCommandLinkRenderer
>> encodeHtmlCommandLinkWithJavaScript
>         final String functionName = JavaScriptUtil
>                 .getClearHiddenCommandFormParamsFunctionName(formName)
>                 + "();";
>> formNameが異なるものになるので、
> 生成されるfunctionNameが異なるものになります。
> 後者はJSF通常の親のIDを:でくっつけていくので、
> <component
class="org.seasar.teeda.core.render.JsfSpecComponentIdLookupStrategy"/>
> は動作していたのだと思います。
>
> 希望としましては、
> <component
class="org.seasar.teeda.core.render.DefaultComponentIdLookupStrategy">
> を使用し、
> <h:commandLink action="#{add_addPage.doOnceCalculate}" value="btn" />
> も利用したいので修正していただけると幸いです。
>
> 影響範囲が良く分かりませんが、
> 一度決まったClientIdは以後変わるべきではないと思うので、
> (UIComponentBaseがそうしているように感じるので)
> Strategyで決めたIDをUIComponentにセットするなどではダメなのでしょうか?
>
> 検証に用いたhtmlを添付します。
> exampleのaddの中においてくだされば再現します。
>
> 以上 申し訳ありませんが宜しくお願いいたします。

---
米林 正明
[E-MAIL ADDRESS DELETED]



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