📄 struts 2中的ognl - max on java - blogjava.htm
字号:
style="BACKGROUND-COLOR: lightgrey">books.{?#this.title=='Code Complete, Second
Edition'}.{price}</SPAN>”返回的值是集合类型,所以要用“[索引]”来访问其值。</P>
<P>最后是Struts 2的配置文件struts.xml,内容如下:</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: #0000ff"><?</SPAN><SPAN style="COLOR: #ff00ff">xml
version="1.0" encoding="UTF-8"</SPAN><SPAN
style="COLOR: #0000ff">?></SPAN><SPAN
style="COLOR: #000000"><BR><BR></SPAN><SPAN
style="COLOR: #0000ff"><!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE struts
PUBLIC<BR> "-//Apache Software Foundation//DTD Struts Configuration
2.0//EN"<BR>
"http://struts.apache.org/dtds/struts-2.0.dtd"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000"><BR><BR></SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">struts</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">constant </SPAN><SPAN
style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="struts.devMode"</SPAN><SPAN style="COLOR: #ff0000">
value</SPAN><SPAN style="COLOR: #0000ff">="true"</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">package
</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="Struts2_OGNL_DEMO"</SPAN><SPAN style="COLOR: #ff0000">
extends</SPAN><SPAN style="COLOR: #0000ff">="struts-default"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">action </SPAN><SPAN
style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="Ognl"</SPAN><SPAN style="COLOR: #ff0000">
class</SPAN><SPAN
style="COLOR: #0000ff">="tutorial.action.OgnlAction"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN
style="COLOR: #800000">result</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">/Ognl.jsp</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">result</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">action</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">
<BR> </SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">package</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">struts</SPAN><SPAN
style="COLOR: #0000ff">></SPAN></DIV><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单4 src/struts.xml</SPAN> <BR>
<P>发布运行应用程序,结果如下所示:</P>
<P><A
href="http://www.blogjava.net/images/blogjava_net/max/22067/o_image1.gif"><IMG
alt=点击查看放大图片
src="Struts 2中的OGNL - Max On Java - BlogJava.files/r_image1.gif"></A><BR><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单5 示例运行结果1</SPAN></P>
<P>“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如在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: #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">%的用途</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: #800000">s:url
</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">p</SPAN><SPAN
style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">s:url
</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></DIV><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单6 演示%用途的代码片段</SPAN>
<P>刷新页面,结果如下所示:</P>
<P><IMG src="Struts 2中的OGNL - Max On Java - BlogJava.files/r_image2.gif"><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单7 示例运行结果2</SPAN></P>
<P>“$”有两个主要的用途</P>
<OL>
<LI>用于在国际化资源文件中,引用OGNL表达式,例子请参考《<A
href="http://www.blogjava.net/max/archive/2006/11/01/78536.aspx">在Struts
2.0中国际化(i18n)您的应用程序</A>》
<LI>在Struts 2配置文件中,引用OGNL表达式,如
<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: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action
</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="AddPhoto"</SPAN><SPAN style="COLOR: #ff0000">
class</SPAN><SPAN style="COLOR: #0000ff">="addPhoto"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN
style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref
</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN
style="COLOR: #0000ff">="fileUploadStack"</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">result </SPAN><SPAN
style="COLOR: #ff0000">type</SPAN><SPAN
style="COLOR: #0000ff">="redirect"</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN
style="COLOR: #000000">ListPhotos.action?albumId=${albumId}</SPAN><SPAN
style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">result</SPAN><SPAN
style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>
</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN
style="COLOR: #800000">action</SPAN><SPAN
style="COLOR: #0000ff">></SPAN></DIV><SPAN
style="FONT-SIZE: smaller; FONT-STYLE: italic">清单8 演示$用途的代码片段</SPAN> </LI></OL>
<H2>总结</H2>
<P>OGNL是一种功能很大的表达式语言,熟悉它可以使我们的开发变得更快捷。</P>
<DIV class=postDesc>posted on 2007-04-28 19:43 <A
href="http://www.blogjava.net/max/">Max</A> 阅读(4222) <A
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#Post">评论(14)</A>
<A
href="http://www.blogjava.net/max/admin/EditPosts.aspx?postid=114417">编辑</A> <A
href="http://www.blogjava.net/max/AddToFavorite.aspx?id=114417">收藏</A> <A
href="http://www.blogjava.net/max/services/trackbacks/114417.aspx">引用</A> 所属分类:
<A href="http://www.blogjava.net/max/category/16130.html">Struts 2.0系列</A>
</DIV></DIV><IMG height=1
src="Struts 2中的OGNL - Max On Java - BlogJava.files/114417.jpg" width=1> <!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.blogjava.net/max/archive/2007/04/28/114417.html"
dc:identifier="http://www.blogjava.net/max/archive/2007/04/28/114417.html"
dc:title="Struts 2中的OGNL"
trackback:ping="http://www.blogjava.net/max/services/trackbacks/114417.aspx" />
</rdf:RDF>
-->
<SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
</SCRIPT>
<DIV id=AjaxHolder_UpdatePanel1><A
name=pagedcomment></A><!--done--><BR><B>评论:</B>
<DIV class=feedbackNoItems></DIV>
<DIV class=feedbackItem>
<DIV class=feedbackListSubtitle><A title="permalink: re: Struts 2中的OGNL"
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#114444">#</A> <A
name=114444></A>re: Struts 2中的OGNL 2007-04-28 23:01 | <A
id=AjaxHolder_Comments_CommentList_ctl00_NameLink
href="http://www.blogjava.net/maninred/" target=_blank>轩朗=maninred</A><BR>
<DIV align=left>为什么要叫struts的ognl,而不叫webwork的ognl? <A
onclick='return SetReplyAuhor("轩朗=maninred")'
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#post">回复</A> <A
title=查看该作者发表过的评论
href="http://www.blogjava.net/comment?author=%e8%bd%a9%e6%9c%97%3dmaninred"
target=_blank>更多评论</A><BR><A id=AjaxHolder_Comments_CommentList_ctl00_DeleteLink
href="javascript:__doPostBack('AjaxHolder$Comments$CommentList$ctl00$DeleteLink','')"></A> <A
id=AjaxHolder_Comments_CommentList_ctl00_EditLink></A></DIV></DIV></DIV>
<DIV class=feedbackItem>
<DIV class=feedbackListSubtitle><A title="permalink: re: Struts 2中的OGNL"
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#114514">#</A> <A
name=114514></A>re: Struts 2中的OGNL 2007-04-29 10:33 | <A
id=AjaxHolder_Comments_CommentList_ctl01_NameLink target=_blank>qa</A><BR>
<DIV align=left>抱怨一下标签的设计:OGNL的使用是每个标签自己来负责的?!
<BR>在给datepicker用了OGNL出现问题,一路追下来的发现。拿value的部分俨然没考虑这一点。
<BR><BR>考虑一下如果要改要如何下手吧,想好了提给struts2的标签组 :) <A
onclick='return SetReplyAuhor("qa")'
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#post">回复</A> <A
title=查看该作者发表过的评论 href="http://www.blogjava.net/comment?author=qa"
target=_blank>更多评论</A><BR><A id=AjaxHolder_Comments_CommentList_ctl01_DeleteLink
href="javascript:__doPostBack('AjaxHolder$Comments$CommentList$ctl01$DeleteLink','')"></A> <A
id=AjaxHolder_Comments_CommentList_ctl01_EditLink></A></DIV></DIV></DIV>
<DIV class=feedbackItem>
<DIV class=feedbackListSubtitle><A title="permalink: re: Struts 2中的OGNL"
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#114713">#</A> <A
name=114713></A>re: Struts 2中的OGNL 2007-04-30 10:02 | <A
id=AjaxHolder_Comments_CommentList_ctl02_NameLink target=_blank>mm</A><BR>
<DIV align=left><s:set name="url" value="module/muser_main.jsp" />
<BR><s:include value="%{#url}" /> <BR>怎么不管用呢?界面一片空白,我想动态添加
<BR>module/muser_main.jsp页面,该怎么办? <BR>如何使用<s:include value=""
/>标签? <A onclick='return SetReplyAuhor("mm")'
href="http://www.blogjava.net/max/archive/2007/04/28/114417.html#post">回复</A> <A
title=查看该作者发表过的评论 href="http://www.blogjava.net/comment?author=mm"
target=_blank>更多评论</A><BR><A id=AjaxHolder_Comments_CommentList_ctl02_DeleteLink
h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -