📄 struts 2中的ognl - max on java - blogjava.htm
字号:
align=top> }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG
src="Struts 2中的OGNL - Max On Java - BlogJava.files/ExpandedBlockEnd.gif"
align=top>}</SPAN></SPAN></DIV><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单2
src/tutorial/action/OgnlAction.java</SPAN> <BR>
<P>以上代码分别在request、session和application的范围内添加“userName”属性,然后再在JSP页面使用OGNL将其取回。我还创建了Book对象的列表用于演示“用于过滤和投影(projecting)集合”的功能,至于Book的代码大家可以在我前一文章《<A
href="http://www.blogjava.net/max/archive/2007/04/13/110310.html">在Struts
2中实现CRUD</A>》看到。</P>
<P>下面是Ognl.jsp的代码,内容如下:</P>
<DIV
style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@ page language</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">java</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> contentType</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text/html;
charset=utf-8</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> pageEncoding</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">utf-8</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></SPAN><SPAN
style="COLOR: #000000"><BR></SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@ taglib prefix</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">s</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> uri</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/struts-tags</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </SPAN><SPAN
style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></SPAN><SPAN
style="COLOR: #000000"><BR><BR></SPAN><SPAN
style="COLOR: #0000ff"><!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">html </SPAN><SPAN
style="COLOR: #ff0000">xmlns</SPAN><SPAN
style="COLOR: #0000ff">="http://www.w3.org/1999/xhtml"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">head</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">title</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">Struts OGNL Demo</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">title</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">head</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">body</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"> <BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">h3</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">访问OGNL上下文和Action上下文</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h3</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">parameters: </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#parameters.userName"</SPAN><SPAN
style="COLOR: #ff0000"> </SPAN><SPAN
style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">request.userName:
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">s:property </SPAN><SPAN
style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#request.userName"</SPAN><SPAN style="COLOR: #ff0000">
</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">session.userName:
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">s:property </SPAN><SPAN
style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#session.userName"</SPAN><SPAN style="COLOR: #ff0000">
</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">application.userName: </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#application.userName"</SPAN><SPAN
style="COLOR: #ff0000"> </SPAN><SPAN
style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">attr.userName:
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">s:property </SPAN><SPAN
style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#attr.userName"</SPAN><SPAN style="COLOR: #ff0000">
</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">hr </SPAN><SPAN
style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">h3</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">用于过滤和投影(projecting)集合</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h3</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">Books more than $35</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:iterator
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="books.{?#this.price > 35}"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">li</SPAN><SPAN
style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="title"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN
style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"> - $</SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="price"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN
style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">li</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">s:iterator</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">The price of
"Code Complete, Second Edition" is: </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="books.{?#this.title=='Code Complete, Second
Edition'}.{price}[0]"</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR> </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">hr </SPAN><SPAN
style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">h3</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">构造Map</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h3</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">s:set </SPAN><SPAN
style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="foobar"</SPAN><SPAN style="COLOR: #ff0000">
value</SPAN><SPAN style="COLOR: #0000ff">="#{'foo1':'bar1',
'foo2':'bar2'}"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN
style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">The value of key "foo1" is </SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">s:property
</SPAN><SPAN style="COLOR: #ff0000">value</SPAN><SPAN
style="COLOR: #0000ff">="#foobar['foo1']"</SPAN><SPAN style="COLOR: #ff0000">
</SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN
style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">body</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">html</SPAN><SPAN
style="COLOR: #0000ff">></SPAN></DIV><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单3 WebContent/Ognl.jsp</SPAN>
<P>以上代码值得注意的是“<SPAN style="BACKGROUND-COLOR: lightgrey"><s:property
value="books.{?#this.title=='Code Complete, Second
Edition'}.{price}[0]"/></SPAN>”,因为“<SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -