﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zkjbeyond-随笔分类-Web框架</title><link>http://www.blogjava.net/zkjbeyond/category/7040.html</link><description>原创专栏 开源学习</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 15:26:37 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 15:26:37 GMT</pubDate><ttl>60</ttl><item><title>ajax blog 搬家</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 21 Aug 2006 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/64760.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/64760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/64760.html</trackback:ping><description><![CDATA[BlogJava做为java的专业blog，偶在这老写javascript  ajax的东西，有些不合适。<br /><br />朋友给了个blog,专门放ajax的文章吧！以后这专门写关于java的东西吧。<br /><a href="http://zkj.wisekernel.net">http://zkj.wisekernel.net</a><br /><br />谢谢支持。<img src ="http://www.blogjava.net/zkjbeyond/aggbug/64760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-08-21 12:52 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork2.2.2 Value Stack</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/24/42902.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 24 Apr 2006 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/24/42902.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/42902.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/24/42902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/42902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/42902.html</trackback:ping><description><![CDATA[Said another way, let's say I have a value stack that consists of a <br />model and an action as follows: 
<p class="paragraph">[ model, action ]<br />here's how the following ognl would resolve: <br />[0] - a CompoundRoot object that contains our stack, [model, action]</p>[1] - another CompoundRoot that contains only [action] 
<p class="paragraph">[0].toString() - calls toString() on the first object in the value stack (excluding the CompoundRoot) that supports the toString() method</p>[1].foo - call getFoo() on the first object in the value stack starting from [OS:action] and excluding the CompoundRoot that supports a getFoo() method<br /><br />以上是webwork文档中谈到Value Stack部分.看了有些晦涩,我试验了下,与大家分享.(没看源代码)<br />Action:<br /><br /><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"><img id="Codehighlighter1_42_555_Open_Image" onclick="this.style.display='none'; Codehighlighter1_42_555_Open_Text.style.display='none'; Codehighlighter1_42_555_Closed_Image.style.display='inline'; Codehighlighter1_42_555_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_42_555_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_555_Closed_Text.style.display='none'; Codehighlighter1_42_555_Open_Image.style.display='inline'; Codehighlighter1_42_555_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> HomeAction </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> Action </span><span id="Codehighlighter1_42_555_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_42_555_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">propertyOfAction</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Person person</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Collection collection </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArrayList();<br /><img id="Codehighlighter1_210_331_Open_Image" onclick="this.style.display='none'; Codehighlighter1_210_331_Open_Text.style.display='none'; Codehighlighter1_210_331_Closed_Image.style.display='inline'; Codehighlighter1_210_331_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_210_331_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_210_331_Closed_Text.style.display='none'; Codehighlighter1_210_331_Open_Image.style.display='inline'; Codehighlighter1_210_331_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String execute() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception </span><span id="Codehighlighter1_210_331_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_210_331_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        collection.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Person(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zkj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        collection.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Person(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yql</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        collection.add(person);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> SUCCESS;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_358_376_Open_Image" onclick="this.style.display='none'; Codehighlighter1_358_376_Open_Text.style.display='none'; Codehighlighter1_358_376_Closed_Image.style.display='inline'; Codehighlighter1_358_376_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_358_376_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_358_376_Closed_Text.style.display='none'; Codehighlighter1_358_376_Open_Image.style.display='inline'; Codehighlighter1_358_376_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getName() </span><span id="Codehighlighter1_358_376_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_358_376_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_405_425_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_425_Open_Text.style.display='none'; Codehighlighter1_405_425_Closed_Image.style.display='inline'; Codehighlighter1_405_425_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_405_425_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_405_425_Closed_Text.style.display='none'; Codehighlighter1_405_425_Open_Image.style.display='inline'; Codehighlighter1_405_425_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Person getPerson() </span><span id="Codehighlighter1_405_425_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_405_425_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> person;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_462_486_Open_Image" onclick="this.style.display='none'; Codehighlighter1_462_486_Open_Text.style.display='none'; Codehighlighter1_462_486_Closed_Image.style.display='inline'; Codehighlighter1_462_486_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_462_486_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_462_486_Closed_Text.style.display='none'; Codehighlighter1_462_486_Open_Image.style.display='inline'; Codehighlighter1_462_486_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Collection getCollection() </span><span id="Codehighlighter1_462_486_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_462_486_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> collection;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_526_553_Open_Image" onclick="this.style.display='none'; Codehighlighter1_526_553_Open_Text.style.display='none'; Codehighlighter1_526_553_Closed_Image.style.display='inline'; Codehighlighter1_526_553_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_526_553_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_526_553_Closed_Text.style.display='none'; Codehighlighter1_526_553_Open_Image.style.display='inline'; Codehighlighter1_526_553_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setPerson(Person person) </span><span id="Codehighlighter1_526_553_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_526_553_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.person </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> person;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />在jsp页面中:<br /><br />如果我们直接<br />&lt;ww:property value="[0]"/&gt;   输出<a href="mailto:com.founder.HomeAction@e3ffdf,com.opensymphony.xwork.DefaultTextProvider@d402dd"><font style="BACKGROUND-COLOR: #a9a9a9" color="#000000">com.founder.HomeAction@e3ffdf,com.opensymphony.xwork.DefaultTextProvider@d402dd</font></a><font style="BACKGROUND-COLOR: #808080" color="#000000"><font style="BACKGROUND-COLOR: #a9a9a9">]</font><br /><font style="BACKGROUND-COLOR: #ffffff">&lt;ww:property value="[1]"/&gt;   输出</font></font><br /><font style="BACKGROUND-COLOR: #808080"><font style="BACKGROUND-COLOR: #a9a9a9">[com.opensymphony.xwork.DefaultTextProvider@d402dd]</font><br /><font style="BACKGROUND-COLOR: #ffffff">一般我们在没有循环的情况下不用[0]  [1] 可以直接访问<br /><br />&lt;ww:property value="name"/&gt;输出  </font></font><font style="BACKGROUND-COLOR: #a9a9a9">propertyOfAction<br /><br /><font style="BACKGROUND-COLOR: #ffffff">那么[0] [1] 有什么用呢,在循环中就体现出来了.</font><br /><br /><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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:iterator </span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="collection"</span><span style="COLOR: #ff0000"> status</span><span style="COLOR: #0000ff">="person"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:if </span><span style="COLOR: #ff0000">test</span><span style="COLOR: #0000ff">="#person.first == true"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                [0] :</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:property </span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="[0]"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                [1] :</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:property </span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="[1]"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                [2] :</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:property </span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="[2]"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ww:if</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ww:iterator</span><span style="COLOR: #0000ff">&gt;</span></div><font style="BACKGROUND-COLOR: #a9a9a9">[0] :[com.founder.Person@b3a5a0, com.founder.HomeAction@e3ffdf, com.opensymphony.xwork.DefaultTextProvider@d402dd]<br />[1] :[com.founder.HomeAction@e3ffdf, com.opensymphony.xwork.DefaultTextProvider@d402dd]<br />[2] :[com.opensymphony.xwork.DefaultTextProvider@d402dd]<br /><font style="BACKGROUND-COLOR: #ffffff">输出以上代码,说明在一层循环中我们要访问[1]表示action对象.和没有循环的[0]对应.<br /></font><br /><br /><font style="BACKGROUND-COLOR: #ffffff"><strong>总结:<br /><br />假如你用webworkNOUI标签,对于Value Stack,一般你不要考虑[1] [0]之类的.记住一点<br />如果在循环中action的collection属性时体内,用[1]可以访问action对象和对应的属性.<br /><br />对于多层循环或复杂用法,我只能告诉你,你的设计有问题?重构Model代码吧.<br /></strong></font></font><br /><br /></font><img src ="http://www.blogjava.net/zkjbeyond/aggbug/42902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-04-24 22:32 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/04/24/42902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>