限定しりとり

こんばんは。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に詳しい方がおらず、困っています。
初歩的な事で申し訳ありませんが、宜しくお願いします。

A 回答 (1件)

私も詳しくないので詳細な解説はできませんが


アドバイス程度に、、、

#{}が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 について色々書かれています。

参考URL:http://www.iterasi.net/openviewer.aspx?sqrlitid= …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!