Bruce Ritchie sent me a bugfix for PropertyTag a while back when I was
working on it that unfortunately never reached me. Fortunately this was
cleared up when he appeared on irc so I've made a diff of this change
(tested on my machine I might add).

I have also corrected the jsp reference page somewhat. The docs on the
property tag now actually describes what it does :P. These changes are also
attached to this email as a diff. Since I no longer have commit access I
can't fix this in CVS myself.

// Anders Hovmöller
Index: BasicPropertyTag.java
===================================================================
RCS file: 
/cvsroot/opensymphony/webwork/src/main/webwork/view/taglib/BasicPropertyTag.java,v
retrieving revision 1.1
diff -r1.1 BasicPropertyTag.java
130c130,142
<       escape=null;
---
>                       // Bruce Ritchie
>                       // don't reset escape since some container implementations 
>won't handle correctly
>                       // since escape property might not get set if it's the same 
>value as the previous
>                       // call to the tag
>                       // see the jsp spec (1.2) section 10.1
>                       //
>                       //Once properly set, all properties are expected to be 
>persistent, so that if the
>                       //JSP container ascertains that a property has already been 
>set on a given tag
>                       //handler instance, it needs not set it again. User code can 
>access property
>                       //information and access and modify tag handler internal state 
>starting with the first
>                       //action method (doStartTag) up until the last action method 
>(doEndTag or
>                       //doFinally for tag handlers implementing TryCatchFinally).
>       //escape=null;

Index: tag.jsp
===================================================================
RCS file: /cvsroot/opensymphony/webwork/src/docs/manual/tag.jsp,v
retrieving revision 1.6
diff -r1.6 tag.jsp
50,52c50,52
<    Browser:<webwork:property value="browser"/><br>
<    Version:<webwork:property value="version"/><br>
<    Supports GIF:<webwork:if test="supportsType('image/gif') == 
true">Yes</webwork:if><webwork:else>No</webwork:else><br>
---
>   Browser:<webwork:property value="browser"/><br>
>   Version:<webwork:property value="version"/><br>
>   Supports GIF:<webwork:if test="supportsType('image/gif') == 
>true">Yes</webwork:if><webwork:else>No</webwork:else><br>
79,80c79,80
< <ww:property escape="true"> 
< <H1>Testing append, subset, and value generators</H1>
---
> <ww:property escape="true">
> <h1>Testing append, subset, and value generators</h1>
83,100c83,101
< <webwork:bean name="'webwork.util.Counter'">
<   <webwork:param name="'last'" value="5"/>
< <webwork:iterator id="colcount">
< <tr>
< <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
id="values"/>
< <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
< <iterator:append>
<     <webwork:param name="'source'" value="@values"/>
<     <webwork:param name="'source'" value="@space"/>
< 
<   <iterator:subset count="6">
<      <webwork:iterator>
<      <td width=40><webwork:property/></td>
<      </webwork:iterator>
<   </iterator:subset>
< </iterator:append>
< </tr>
< </webwork:iterator>
---
>   <webwork:bean name="'webwork.util.Counter'">
>     <webwork:param name="'last'" value="5"/>
>     <webwork:iterator id="colcount">
>       <tr>
>         <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
>id="values"/>
>         <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
>         <iterator:append>
>           <webwork:param name="'source'" value="@values"/>
>           <webwork:param name="'source'" value="@space"/>
> 
>           <iterator:subset count="6">
>             <webwork:iterator>
>               <td width="40"><webwork:property/></td>
>             </webwork:iterator>
>           </iterator:subset>
>         </iterator:append>
>       </tr>
>     </webwork:iterator>
>   </webwork:bean>
102d102
< </webwork:bean>
246c246
< <H1>Testing append, subset, and value generators</H1>
---
> <h1>Testing append, subset, and value generators</h1>
249,278c249,279
< <webwork:bean name="'webwork.util.Counter'">
<   <webwork:param name="'last'" value="5"/>
< <webwork:iterator id="colcount">
< <tr>
< 
< ************************************************************
<    Generator will create an Iterator that has 5 items. 
<    The first 3 are "foo,bar,xyzzy". Item 4 and 5 will be
<    foo and bar respectively. If the count is more than
<    the items, you start over.
< ************************************************************      
< <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
id="values"/>
< 
< ************************************************************
<    Generator will create an Iterator that has infinite
<    &nbsp;. Count=-1 means indefinite.   
< ************************************************************      
< <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
< <iterator:append>
<     <webwork:param name="'source'" value="@values"/>
<     <webwork:param name="'source'" value="@space"/>
< 
<   <iterator:subset count="6">
<      <webwork:iterator>
<      <td width=40><webwork:property/></td>
<      </webwork:iterator>
<   </iterator:subset>
< </iterator:append>
< </tr>
< </webwork:iterator>
---
>   <webwork:bean name="'webwork.util.Counter'">
>     <webwork:param name="'last'" value="5"/>
>     <webwork:iterator id="colcount">
>       <tr>
> 
>         ************************************************************
>            Generator will create an Iterator that has 5 items. 
>            The first 3 are "foo,bar,xyzzy". Item 4 and 5 will be
>            foo and bar respectively. If the count is more than
>            the items, you start over.
>         ************************************************************      
>         <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
>id="values"/>
> 
>         ************************************************************
>            Generator will create an Iterator that has infinite
>            &nbsp;. Count=-1 means indefinite.   
>         ************************************************************      
>         <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
>         <iterator:append>
>           <webwork:param name="'source'" value="@values"/>
>           <webwork:param name="'source'" value="@space"/>
> 
>           <iterator:subset count="6">
>             <webwork:iterator>
>               <td width="40"><webwork:property/></td>
>             </webwork:iterator>
>           </iterator:subset>
>         </iterator:append>
>       </tr>
>     </webwork:iterator>
>   </webwork:bean>
280d280
< </webwork:bean>
400c400
<     <webwork:property/><br>
---
>     <webwork:property/><br />
410c410
< <H1>Testing iterator status</H1>
---
> <h1>Testing iterator status</h1>
418,424c418,419
< <webwork:iterator value="@rowcounter" status="'rowstatus'">
< <tr>
< 
< <webwork:bean name="'webwork.util.Counter'" id="colcounter">
<   <webwork:param name="'first'" value="0"/>
<   <webwork:param name="'last'" value="5"/>
< </webwork:bean>
---
>   <webwork:iterator value="@rowcounter" status="'rowstatus'">
>   <tr>
426,437c421,437
< <webwork:iterator value="@colcounter" status="'colstatus'">
<    ************************************************************
<       if it is (first row) or (first column) or (last row) then
<       output the column number.
<    ************************************************************      
<    <webwork:if test="@rowstatus/first==true || @colstatus/first==true || 
@rowstatus/last==true">
<       <th><webwork:property value="@colstatus/count"/></th>
<    </webwork:if>
<    <webwork:else>
<       <td><webwork:property/></td>
<    </webwork:else>
< </webwork:iterator>
---
>     <webwork:bean name="'webwork.util.Counter'" id="colcounter">
>       <webwork:param name="'first'" value="0"/>
>       <webwork:param name="'last'" value="5"/>
>     </webwork:bean>
> 
>     <webwork:iterator value="@colcounter" status="'colstatus'">
>       ************************************************************
>         if it is (first row) or (first column) or (last row) then
>         output the column number.
>       ************************************************************      
>       <webwork:if test="@rowstatus/first==true || @colstatus/first==true || 
>@rowstatus/last==true">
>         <th><webwork:property value="@colstatus/count"/></th>
>       </webwork:if>
>       <webwork:else>
>         <td><webwork:property/></td>
>       </webwork:else>
>     </webwork:iterator>
439,440c439,440
< </tr>
< </webwork:iterator>
---
>   </tr>
>   </webwork:iterator>
452,453c452,453
<    <webwork:if test="@status/odd == true"> <br> </webwork:if>
<    <br>
---
>    <webwork:if test="@status/odd == true"> <br /> </webwork:if>
>    <br />
463,464c463,464
<       <webwork:if test="@status/modulus(4) == 0"> <br> </webwork:if>
<       <br>
---
>   <webwork:if test="@status/modulus(4) == 0"> <br /> </webwork:if>
>   <br />
491c491
< <webwork:text name="'main.title'"/>
---
>   <webwork:text name="'main.title'"/>
520d519
< <br>
526,528c525,527
<     <webwork:param name="'source'" value="@foo"/>
<     <webwork:param name="'source'" value="@bar"/>
<     <webwork:param name="'source'" value="@xyzzy"/>
---
>   <webwork:param name="'source'" value="@foo"/>
>   <webwork:param name="'source'" value="@bar"/>
>   <webwork:param name="'source'" value="@xyzzy"/>
531,533c530,532
<      <webwork:iterator status="'status'">
<        <webwork:property value="@status/count"/>:<webwork:property/><br>
<      </webwork:iterator>
---
>     <webwork:iterator status="'status'">
>       <webwork:property value="@status/count"/>:<webwork:property/><br>
>     </webwork:iterator>
577,579c576,589
< <p>Used to retrieve a value and print it out. By default, it will escape HTML 
< characters for tags with *no* bodies. Tags with bodies will not be escaped by 
default. 
< You can override this with explicit setting of the escape attribute.
---
> <p>The property tag has two distinct use cases: 
> <ol>
>   <li>fetching a value and printing it</li>
>   <li>putting a value on the top of the value stack within its body</li>
> </ol>
> 
> If the body of the tag is empty (for example <pre><webwork:property 
>value="foo"/></pre> or 
> <pre><webwork:property value="foo"></webwork:property value="foo"></pre>) it will 
>automatically
> use the first use case, i.e. print the value. If the body is not empty (for example 
> <pre><webwork:property value="foo">foo</webwork:property value="foo"></pre>) it will 
>use the 
> second use case. Observe that even one space or newline is counted as "not empty".
> 
> By default, it will escape HTML characters for use case 1. Tags with bodies will not 
>be 
> escaped by default. You can override this with explicit setting of the escape 
>attribute.
645c655
< Ascending:<br>
---
> Ascending:<br />
647,649c657,659
< <webwork:iterator>
< <webwork:property/><br>
< </webwork:iterator>
---
>   <webwork:iterator>
>     <webwork:property/><br />
>   </webwork:iterator>
651d660
< <p>
668,670c677,679
< <webwork:iterator>
< <webwork:property/><br>
< </webwork:iterator>
---
>   <webwork:iterator>
>     <webwork:property/><br>
>   </webwork:iterator>
672d680
< <p>
685,687c693,695
< <webwork:iterator>
< <webwork:property/><br>
< </webwork:iterator>
---
>   <webwork:iterator>
>     <webwork:property/><br>
>   </webwork:iterator>
689d696
< <p>
727c734
< <H1>Testing append, subset, and value generators</H1>
---
> <h1>Testing append, subset, and value generators</h1>
730,747c737,755
< <webwork:bean name="'webwork.util.Counter'">
<   <webwork:param name="'last'" value="5"/>
< <webwork:iterator id="colcount">
< <tr>
< <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
id="values"/>
< <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
< <iterator:append>
<     <webwork:param name="'source'" value="@values"/>
<     <webwork:param name="'source'" value="@space"/>
< 
<   <iterator:subset count="6">
<      <webwork:iterator>
<      <td width=40><webwork:property/></td>
<      </webwork:iterator>
<   </iterator:subset>
< </iterator:append>
< </tr>
< </webwork:iterator>
---
>   <webwork:bean name="'webwork.util.Counter'">
>     <webwork:param name="'last'" value="5"/>
>     <webwork:iterator id="colcount">
>     <tr>
>       <iterator:generator val="'foo,bar,xyzzy'" separator="','" count="@colcount" 
>id="values"/>
>       <iterator:generator val="'&nbsp;'" count="-1" id="space"/>
>       <iterator:append>
>         <webwork:param name="'source'" value="@values"/>
>         <webwork:param name="'source'" value="@space"/>
> 
>         <iterator:subset count="6">
>           <webwork:iterator>
>             <td width="40"><webwork:property/></td>
>           </webwork:iterator>
>         </iterator:subset>
>       </iterator:append>
>       </tr>
>     </webwork:iterator>
>   </webwork:bean>
749d756
< </webwork:bean>
793c800
< <td><b><webwork:text name="'cd.albumLabel'"/></b></td>
---
> <webwork:text name="'cd.albumLabel'"/><br />
817,818c824,826
< <form action="<webwork:url value="'hiturl.action'"/>" method="POST">
< ...
---
>   <form action="<webwork:url value="'hiturl.action'"/>" method="POST">
>     ...
>   </form>
831a840
> </form>
1300,1301c1309,1310
< <webwork:action name="'BookList'" id="booklist"/>
< <ui:select label="'Book'" name="'auth'" list="@booklist/books" listKey="'author'" 
listValue="'title'"/>
---
>   <webwork:action name="'BookList'" id="booklist"/>
>   <ui:select label="'Book'" name="'auth'" list="@booklist/books" listKey="'author'" 
>listValue="'title'"/>
1373,1377c1382,1386
<    <webwork:param name="'columnHidden(1)'" value="true"/>
<    <webwork:param name="'columnDisplayName(2)'" value="'New Display Name'"/>
<    <webwork:param name="'columnRenderer(0)'" value="@dateRenderer"/>
<    <webwork:param name="'columnRenderer(2)'" value="@linkRenderer"/>
<    <webwork:param name="'columnRenderer(4)'" value="@intRenderer"/>
---
>   <webwork:param name="'columnHidden(1)'" value="true"/>
>   <webwork:param name="'columnDisplayName(2)'" value="'New Display Name'"/>
>   <webwork:param name="'columnRenderer(0)'" value="@dateRenderer"/>
>   <webwork:param name="'columnRenderer(2)'" value="@linkRenderer"/>
>   <webwork:param name="'columnRenderer(4)'" value="@intRenderer"/>
1602,1608c1611,1617
<    <form>
<       <vui:field name="'foo'">
<          <vui:prompt>
<             <vui:audio persona="'female'" src="'test.wav'" tts="'This is a test'"/>
<          </vui:prompt>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>       <vui:prompt>
>         <vui:audio persona="'female'" src="'test.wav'" tts="'This is a test'"/>
>       </vui:prompt>
>     </vui:field>
>   </form>
1663,1669c1672,1678
<    <form>
<       <vui:field name="'foo'">
<          <vui:prompt>
<             <vui:audio persona="'female'" src="'test.wav'" tts="'This is a test'"/>
<          </vui:prompt>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>       <vui:prompt>
>         <vui:audio persona="'female'" src="'test.wav'" tts="'This is a test'"/>
>       </vui:prompt>
>     </vui:field>
>   </form>
1720,1725c1729,1734
<    <form>
<       <vui:field name="'foo'">
<          <prompt>Hello, World</prompt>
<          <vui:filled action="'nextform.action'"/>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>       <prompt>Hello, World</prompt>
>       <vui:filled action="'nextform.action'"/>
>     </vui:field>
>   </form>
1780,1784c1789,1793
<    <form>
<       <vui:field name="'foo'">
<          <vui:grammar mode="voice" model="@grammar"/>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>       <vui:grammar mode="voice" model="@grammar"/>
>     </vui:field>
>   </form>
1827,1831c1836,1840
<    <form>
<       <vui:field name="'foo'">
<          <vui:log>Entering Field foo</vui:log>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>        <vui:log>Entering Field foo</vui:log>
>     </vui:field>
>   </form>
1886,1892c1895,1901
<    <form>
<       <vui:field name="'foo'">
<          <vui:prompt bargein="'false'">
<             <vui:audio src="'welcome.wav'"/>
<          </vui:prompt>
<       </vui:field>
<    </form>
---
>   <form>
>     <vui:field name="'foo'">
>       <vui:prompt bargein="'false'">
>         <vui:audio src="'welcome.wav'"/>
>       </vui:prompt>
>     </vui:field>
>   </form>
Index: views-jsp.jsp
===================================================================
RCS file: /cvsroot/opensymphony/webwork/src/docs/manual/views-jsp.jsp,v
retrieving revision 1.2
diff -r1.2 views-jsp.jsp
70a71,72
> <p>A more exchaustive description of the tags can be found in the <a 
>href="tag.jsp">appendix on the WW taglib</a>.</p>
> 

Reply via email to