OGLLはlistとmapを遍歴し、4つの範囲の属性値にアクセスする
8649 ワード
struts 2のactionの属性ドメインに次のようなListとMap変数とStringオブジェクトを2つ定義すると仮定する
getterとsetterの方法を同時に提供する.
Actionのexecuteメソッドには、次のような値付け操作があります.
このactionジャンプ後のビューjspページでstruts 2ラベルとOGLL式を使用して以上の各範囲の値をとるコードは、次のとおりです.
次の結果が表示されます.
いくつかの点を説明します.
1.struts 2は常にactionのインスタンスをスタックの上部に配置します.actionは値スタックにあり、値スタックはOGLLのルートであるため、actionの属性を参照すると#を省略できます.
たとえばactionのプロパティtestnameにアクセスします.
2.request、アプリケーション、セッションおよび要求パラメータparametersの値にアクセスするには、#request.xxxxのようなアクセス方式でアクセスする必要があります.
3. =「{'1年目','2年目','3年目'}」を使用してlistを直接構築し,={'luo 1':'羅先橋1','luo 2':'羅先橋2','luo 3':'羅先橋3'}を使用してmapを直接構築した
private List<String> testlist=new ArrayList<String>();
private Map<String,String> testmap=new HashMap<String,String>();
private String testname="hello,i am in valuestack"; //
getterとsetterの方法を同時に提供する.
Actionのexecuteメソッドには、次のような値付け操作があります.
/*
* OGNL
**/
HttpServletRequest request=ServletActionContext.getRequest(); // request
HttpSession session=request.getSession(); // session
ServletContext context=ServletActionContext.getServletContext(); // application
//
request.setAttribute("request_name", " request name");
context.setAttribute("application_name"," application name");
session.setAttribute("session_name", " session name");
// list request
List<String> request_names=new ArrayList<String>();
request_names.add("reqname1");
request_names.add("reqname2");
request_names.add("reqname3");
request.setAttribute("req_names", request_names);
// map rquest
Map<String,String> request_maps=new HashMap<String,String>();
request_maps.put("request_map1","request_value1");
request_maps.put("request_map2","request_value2");
request_maps.put("request_map3","request_value3");
request.setAttribute("req_maps", request_maps);
// list session
List<String> session_names=new ArrayList<String>();
session_names.add("sessionname1");
session_names.add("sessionname2");
session_names.add("sessionname3");
session.setAttribute("session_names", session_names); // request
// map session
Map<String,String> session_maps=new HashMap<String,String>();
session_maps.put("session_map1","session_value1");
session_maps.put("session_map2","session_value2");
session_maps.put("session_map3","session_value3");
session.setAttribute("session_maps", session_maps);
// ActionContext
//ActionContext testlist
testlist.add("vs144444");
testlist.add("vs24444");
testlist.add("vs34444");
testlist.add("vs44444444");
//ActionContext testmap
testmap.put("mp1", "vsmap1");
testmap.put("mp2", "vsmap2");
testmap.put("mp3", "vsmap3");
testmap.put("mp4", "vsmap5555");
//ActionContext score
testscore.put(" ",95);
testscore.put(" ",75);
testscore.put(" ",55);
testscore.put(" ",65);
testscore.put(" ",85);
testscore.put(" ",44);
このactionジャンプ後のビューjspページでstruts 2ラベルとOGLL式を使用して以上の各範囲の値をとるコードは、次のとおりです.
<hr> <br>
actionContext testname:<s:property value="testname" /> <br>
request request_name:<s:property value="#request.request_name" /><br>
application session_name:<s:property value="#application.application_name" /><br>
session session_name:<s:property value="#session.session_name" /><br>
request list:request_names<p>
<s:iterator value="#request.req_names">
<s:property /><br>
</s:iterator>
request map:request_maps<p>
<s:iterator value="#request.req_maps">
<s:property value="key"/>=<s:property value="value" /><br>
</s:iterator>
session list:session_names<p>
<s:iterator value="#session.session_names">
<s:property /> <br>
</s:iterator>
session map:session_maps<p>
<s:iterator value="#session.session_maps">
<s:property value="key"/>=<s:property value="value" /><br>
</s:iterator>
ActionContext testlist=========================<p>
<s:iterator value="testlist" >
<s:property /><br>
</s:iterator>
actionContext testmap<p>
<s:iterator value="testmap">
<s:property value="key"/>=<s:property value="value" /><br>
</s:iterator>
list<p>
<s:iterator value="{' ',' ',' '}" >
<s:property /><br>
</s:iterator>
map <p>
<s:iterator value="#{'luo1':' 1','luo2':' 2','luo3':' 3'}">
<s:property value="key" />:<s:property value="value"/><br>
</s:iterator>
actionContext testscore map<p>
<s:iterator value="testscore">
<s:property value="key"/>:
<s:if test="value<60">
<br>
</s:if>
<s:elseif test="value>=60 && value<75">
<br>
</s:elseif>
<s:elseif test="value>=75 && value<85">
<br>
</s:elseif>
<s:else>
<br>
</s:else>
</s:iterator>
次の結果が表示されます.
actionContext testname:hello,i am in valuestack
request request_name: request name
application session_name: application name
session session_name: session name
request list:request_names
reqname1
reqname2
reqname3
request map:request_maps
request_map1=request_value1
request_map2=request_value2
request_map3=request_value3
session list:session_names
sessionname1
sessionname2
sessionname3
session map:session_maps
session_map1=session_value1
session_map2=session_value2
session_map3=session_value3
ActionContext testlist=========================
vs144444
vs24444
vs34444
vs44444444
actionContext testmap
mp1=vsmap1
mp2=vsmap2
mp4=vsmap5555
mp3=vsmap3
list
map
luo1: 1
luo2: 2
luo3: 3
actionContext testscore map
:
:
:
:
:
:
いくつかの点を説明します.
1.struts 2は常にactionのインスタンスをスタックの上部に配置します.actionは値スタックにあり、値スタックはOGLLのルートであるため、actionの属性を参照すると#を省略できます.
たとえばactionのプロパティtestnameにアクセスします.
actionContext testname:<s:property value="testname" /> <br>
2.request、アプリケーション、セッションおよび要求パラメータparametersの値にアクセスするには、#request.xxxxのようなアクセス方式でアクセスする必要があります.
3. =「{'1年目','2年目','3年目'}」を使用してlistを直接構築し,={'luo 1':'羅先橋1','luo 2':'羅先橋2','luo 3':'羅先橋3'}を使用してmapを直接構築した