- 締切済み
sturtsとJSF
こんばんは。jsp、struts2の勉強をしているのですが、理解出来ないところがあるのでご教授願います。 以下のようなサンプルソースがあります。 ******************************** <!-- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="s" uri="/struts-tags" %> 3 <html> 4 <body> 5 <s:form> 6 <s:radio name="cmd_radio" list="#{'1':'おはよう','2':'こんにちは','3':'こんばんは'}"> 7 <s:property value=”%{message}”/> 8 <s:submit method="show" value="クリック"/> 9 </s:form> 10 </body> 11 </html> --> ******************************** まず、6行目のlist="#{'1':'おはよう','2':'こんにちは','3':'こんばんは'}、#{}はJSFのEL式と調べたら書いていたのですが、StrutsタグでJSFが併用できるのと言うことでしょうか?そしてこのタグの動きは#{}の中の要素をループさして、HTMLタグを生成していると言う認識で良いのでしょうか。 もう1点7行目のvalue=”%{message}”ですが、変数messageはアクションクラスのメンバ変数で、showメソッドの中で選択されたラジオボタンの値がセットされます。messageのsetter、getterメソッド共にありますが、showメソッドでは message = "選択されたラジオボタンの値"; となっています。 value=”%{message}”ではなく、name = "message" にして、setMessage("選択されたラジオボタンの値"); としてはだめなのでしょうか。それと、%{}はstrutsのEL式なのでしょうか。 周りにstrutsに詳しい方がおらず、困っています。 初歩的な事で申し訳ありませんが、宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hatimiti
- ベストアンサー率68% (26/38)
私も詳しくないので詳細な解説はできませんが アドバイス程度に、、、 #{}がJSFのものかはちょっとわからないのですが、 動作としては、その場でMapオブジェクト(key=1, val=おはよう)を作って、ラジオボタンのvalueとラベルに展開されています。 struts2のカスタムタグはちょっと特殊で、OGNL式が記述できます。 %{}の中にOGNL式を記述して、値の取得などが可能です。 OGNLはEL式より柔軟で、メソッドの呼び出しなども可能です。 ですので、EL式とは少し違います。 struts2 は、OgnlValueStack というスタックに値を詰め込んで、 そこからOgnl式を使って値を取り出したりします。 s:property タグは value 属性で指定した名前のオブジェクトを、 Valueスタックから見つけ出して画面に表示するタグです。 s:radio タグの name を message にしても一緒の動作かなと思います。 間違った回答しているかもですが、 参考URLなどを見てはいかがでしょうか。 struts2 について色々書かれています。