S2JSFのサンプルhello.html
menu.htmlのHelloというリンクをクリックすると
と表示されるようなコードに見えるのだが、そうはならず
Hello
しか表示されない。
このHelloというリンクはmenu.htmlで定義されているがそこでは
<a m:action="hello">Hello <span m:inject="f:param" m:name="message" m:value="World"/> </a>
となっている。http://seasar.sourceforge.jp/s2jsf.html#helloを見ると、
anchorタグの子タグでf:paramタグを指定することにより、遷移先のページへパラメータを渡すことが出来ます。
と書かれているので、Helloの遷移先として(faces-config.htmlで)定義されているhello/hello.htmlへこのmessageというパラメータが渡されるはずでは?実際hello.htmlでは
<span m:inject="s:insert" m:name="body"> Hello <span m:value="#{message}">hoge</span> </span>
となっている。でもこのリンクをクリックしても上記のようにHelloとしか表示されない。生成されたHTMLを見ると
<a href="#" onclick="clear__5Fid29();document.forms['_id29'].elements['_id29:_link_hidden_'].value='_id29:_id35'; document.forms['_id29'].elements['message'].value='World';document.forms['_id29'].submit(); return false;" id="_id29:_id35">Hello </a>
といった感じになっているので無視されてはいないようだ。その一方
http://localhost:8080/s2jsf-example/hello/hello.html?message=World
とすればHello Worldと表示される。この違いは何なんだろう。menu.htmlで設定されたWorldはどこへ行くんだろう?もしかしてリクエストの属性にnullでも設定されたmessageが存在しているのか?だとしたら遷移先にパラメータを渡す記述はなんのためにあるんだ。なんかこれも大変そうだな。