[Seasar-user:2667] [S2JSF]action を起動したフォームのidをプログラムで取得するには?
O.K.U.
oku
2005年 10月 7日 (金) 17:10:15 JST
O.K.U.です。毎度お世話になっております。
早速ですが、action を起動したフォームのidをプログラムで取得する方法はないでしょうか?
具体的には、
<form id="login">
<input id="action" type="submit" m:action="#{loginAction.login}" value="ログイン" /><br />
<span m:inject="h:message" m:for="action" />
</form>
としたときに、LoginAction.login() の中で、これを起動したアクションの id,
すなわち、"login:action" をプログラム上で取得する方法です。
以前お聞きした、
[Seasar-user:2354] action からのエラーメッセージの表示について教えてください。
で、actionプログラムから、狙った位置にエラーメッセージを表示できるように
なったのですが、うまくいくと、さらに欲がでてきてしまいました。(^^;)
前回 [Seasar-user:2361] で書きましたように、プログラム側で
id = "login:action"; といった文字列を指定して、context.addMessage(id, ...);
としてメッセージを狙った位置に表示することができましたが、
これをできれば、プログラム側で "login:action" といった固定の文字列を書かずに、
html上に書かれた id をプログラムで取得することで、プログラムの変更なしで、
デザイナが自由に id 名をつけられるようにしたいのですが、難しいでしょうか?
デバッガで見るぶんには、LoginAction.login() が起動されたところで、
FacesContext.getCurrentInstance()で取得した contextに含まれる、
S2UIViewRoot の events の中に、ActionEvent が格納されていて、
そこの _clientId が求めている文字列かとは思うのですが、
外からこれを参照する方法を見つけることができませんでした。
それに events が参照できたとしても、本当にここの参照でいいのか?
又、私が確かめたときには、events に登録されている ActionEvent は
一つだけでしたが、もしも二つ以上登録されていたら、どれが自身の
ActionEventと判断するのか? も分からず断念しました。
当面は id名 はプログラマがデザイナに指定する方向でいこうとおもいますが、
もし解決手段があれば教えてください。
Seasar-user メーリングリストの案内