Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Controls tags provide the ability to manipulate collections and conditionally produce content.

  1. elseif
  2. elseIf / elseif
  3. ifelse
  4. append
  5. generator
  6. iterator
  7. merge
  8. sort
  9. subset

Examples

If, ElseIf, Else Tag

Preform basic condition flow. 'If' tag could be used by itself or with 'Else If' Tag and/or single/multiple 'Else' Tag.

@see META-INF/webworl.tld

Attribute

Type

Required

test

Boolean

Yes

Code Block

<ww:if test="%{false}">
	<div>Will Not Be Executed</div>
</ww:if>
<ww:elseif test="%{true}">
	<div>Will Be Executed</div>
</ww:elseif>
<ww:else>
	<div>Will Not Be Executed</div>
</ww:else>

Attribute value is treated as Ognl expression and evaluated on the webworks stack (OgnlValueStack) and the result is expected to be a boolean. In this case 'true' has special meaning in Ognl expression which gets evaluated as a boolean true.

Append Tag

// TODO: this tag will be implemented soon

Generator Tag

// TODO: this tag will be implemented soon

Merge Tag

// TODO: this tag will be implemented soon

Sort Tag

Sort a List according to the comparator supplied.

Attribute

Type

Required

Description

source

Object (List)

No

Source of List to be sorted. If none is supplied, will use the 'top' of the stack

comparator

Object (Comparator)

Yes

The comparator to sort the source

id

String

No

If supplied will be used as the pageContext key where the resultant sorted List to be stored in

NOTE: Sort Tag will ALWAYS puch the result into the stack and pop it off at the end of the tag.

Code Block
titlesortTag.jsp

 <!-- METHOD A: Use Sort Tag without id -->
 <ww:sort comparator="%{comparator}" source="%{source}">
	<ww:iterator>
		<ww:property /><br/>
	</ww:iterator>
 </ww:sort>

 <!-- METHOD B: Use Sort Tag with id -->
 <ww:sort id="mySortResult" comparator="%{comparator}" source="%{source}" /> 

 <%
   	List l = (List) pageContext.getAttribute("mySortResult");
	for (Iterator i = l.iterator(); i.hasNext(); ) {
		out.println(i.next());
	}
 %>
Code Block
titleSortAction.java

public class SortAction extends ActionSupport {

	private static final long serialVersionUID = -556501494127336128L;

	@Override
	public String execute() throws Exception {
		return "done";
	}
	
	public Comparator getComparator() {
		return new Comparator<Integer>() {
			public int compare(Integer o1, Integer o2) {
				return o1 - o2; // use Tiger's auto-boxing
			}
		};
	}
	
	public List getSource() {
		List<Integer> l = new ArrayList<Integer>();
		l.add(new Integer(5));
		l.add(new Integer(2));
		l.add(new Integer(3));
		l.add(new Integer(1));
		l.add(new Integer(6));
		l.add(new Integer(4));
		l.add(new Integer(7));
		return l;
	}
}
Code Block
titlexwork.xml

   ...
   <action name="sortAction" class="tmjee.testing.SortAction">
          <result name="done">sortTag.jsp</result>
   </action>
   ...

The above makes uses of sort tag to sort a List defined in SortAction.java. METHOD A makes use of the sorted list that is pushed into the stack and uses the nested Iterator Tag to iterate over the sorted list and print its elements. In METHOD B the supplied id attribute allows the Sort Tag to store the sorted list into the page context and then retrieve the sorted list and display its content using scriptlet.

Subset Tag

Iterator Tag

Iterator will iterate over a value. An iterable value can be either of: java.util.Collection, java.util.Iterator, java.util.Enumeration, java.util.Map, array.

...