summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2011-08-01 11:35:10 +0200
committerLeif Johansson <leifj@sunet.se>2011-08-01 11:35:10 +0200
commite54fabf198f50546b093753900d3a41fa7535181 (patch)
treebcd4952415c938101ae168efc2dcb2b550369e23 /src/main
parent6c67f4c3050fa01d1b8e04f334cb8dd2293b39d0 (diff)
parentbd0c52acfb796b5a8cd85c2f535e7e874f558f3a (diff)
Merge branch 'trunk' into idp.nordu.net
Conflicts: src/main/webapp/wayf.jsp
Diffstat (limited to 'src/main')
-rw-r--r--src/main/webapp/Suggest.js357
-rwxr-xr-x[-rw-r--r--]src/main/webapp/WEB-INF/tlds/struts-bean.tld1476
-rwxr-xr-x[-rw-r--r--]src/main/webapp/WEB-INF/tlds/struts-logic.tld2433
-rw-r--r--src/main/webapp/WEB-INF/web.xml14
-rwxr-xr-x[-rw-r--r--]src/main/webapp/images/internet2.gifbin1204 -> 1204 bytes
-rw-r--r--src/main/webapp/index.htm5
-rw-r--r--src/main/webapp/javascript.jsp45
-rw-r--r--src/main/webapp/static.html163
-rw-r--r--src/main/webapp/static2.html160
-rw-r--r--src/main/webapp/wayf.css18
-rwxr-xr-x[-rw-r--r--]src/main/webapp/wayf.jsp202
-rwxr-xr-x[-rw-r--r--]src/main/webapp/wayferror.jsp9
12 files changed, 918 insertions, 3964 deletions
diff --git a/src/main/webapp/Suggest.js b/src/main/webapp/Suggest.js
deleted file mode 100644
index 2f17b93..0000000
--- a/src/main/webapp/Suggest.js
+++ /dev/null
@@ -1,357 +0,0 @@
-function TypeAheadControl(list, box, orig, submit, optype, ie6hack)
-{
- //
- // Squirrel away the parameters we were given
- //
- this.elementList = list;
- this.textBox = box;
- this.origin = orig;
- this.submit = submit;
- this.optype = optype;
- this.results = 0;
- this.maxResults = 35;
- this.ie6hack = ie6hack;
- var myThis = this;
-
- //
- // Setup the lowercase names
- //
- var i = 0;
- while (i < list.length) {
- if (null == list[i]) {
- list.length = i;
- break;
- }
- list[i][2] = list[i][0].toLowerCase();
- i++;
- }
- //
- // Set up the 'dropDown'
- //
- this.dropDown = document.createElement('div');
- this.dropDown.className = 'dropdown';
- this.dropDown.style.visibility = 'hidden';
- this.dropDown.style.width = box.offsetWidth;
- this.dropDown.current = -1;
- document.body.appendChild(this.dropDown);
-
- //
- // mouse listeners for the dropdown box
- //
- this.dropDown.onmouseover = function(event) {
- if (!event) {
- event = window.event;
- }
- target = event.target;
- if (!target) {
- target = event.srcElement;
- }
- myThis.select(target);
- }
-
- this.dropDown.onmousedown = function(event) {
- if (-1 != myThis.dropDown.current) {
- myThis.textBox.value = myThis.results[myThis.dropDown.current][0];
- }
- }
-
- //
- // Add the listeners to the text box
- //
- this.textBox.onkeyup = function(event) {
- //
- // get window even if needed (because of browser oddities)
- //
- if (!event) {
- event = window.event;
- }
- myThis.handleKeyUp(event);
- };
-
- this.textBox.onkeydown = function(event) {
- if (!event) {
- event = window.event;
- }
-
- myThis.handleKeyDown(event);
- };
-
- this.textBox.onblur = function() {
- myThis.hideDrop();
- };
-
- this.textBox.onfocus = function() {
- myThis.handleChange();
- };
-
-};
-//
-// Given a name return the first maxresults, or all possibles
-//
-TypeAheadControl.prototype.getPossible = function(name) {
- var possibles = [];
- var inIndex = 0;
- var outIndex = 0;
- name = name.toLowerCase();
- var strIndex = 0;
- var str;
- var ostr;
-
- while (outIndex <= this.maxResults && inIndex < this.elementList.length) {
- strIndex = this.elementList[inIndex][2].indexOf(name);
- if (-1 != strIndex) {
- //
- // a hit
- //
- str = this.elementList[inIndex][0];
- possibles[outIndex] = new Array(str, this.elementList[inIndex][1]);
- outIndex ++;
- } else {
- //
- // Check entityId
- strIndex = this.elementList[inIndex][1].indexOf(name);
- if (-1 != strIndex) {
- //
- // a hit
- //
- str = this.elementList[inIndex][0];
- possibles[outIndex] = new Array(str, this.elementList[inIndex][1]);
- outIndex ++;
- }
- }
- inIndex ++;
- }
- //
- // reset the cursor to the top
- //
- this.dropDown.current = -1;
-
- return possibles;
-};
-
-TypeAheadControl.prototype.handleKeyUp = function(event) {
- var key = event.keyCode;
-
- if (27 == key) {
- //
- // Escape - clear
- //
- this.textBox.value = '';
- this.handleChange();
- } else if (8 == key || 32 == key || (key >= 46 && key < 112) || key > 123) {
- //
- // Backspace, Space and >=Del to <F1 and > F12
- //
- this.handleChange();
- }
-};
-
-TypeAheadControl.prototype.handleKeyDown = function(event) {
-
- var key = event.keyCode;
-
- if (38 == key) {
- //
- // up arrow
- //
- this.upSelect();
-
- } else if (40 == key) {
- //
- // down arrow
- //
- this.downSelect();
- }
-};
-
-TypeAheadControl.prototype.hideDrop = function() {
- var i = 0;
- if (null != this.ie6hack) {
- while (i < this.ie6hack.length) {
- this.ie6hack[i].style.visibility = 'visible';
- i++;
- }
- }
- this.dropDown.style.visibility = 'hidden';
- if (-1 == this.dropDown.current) {
- this.doUnselected();
- }
-};
-
-TypeAheadControl.prototype.showDrop = function() {
- var i = 0;
- if (null != this.ie6hack) {
- while (i < this.ie6hack.length) {
- this.ie6hack[i].style.visibility = 'hidden';
- i++;
- }
- }
- this.dropDown.style.visibility = 'visible';
-};
-
-
-TypeAheadControl.prototype.doSelected = function() {
- this.submit.value='Select';
- this.optype.value = 'selection';
-};
-
-TypeAheadControl.prototype.doUnselected = function() {
- this.submit.value='Search';
-
- this.optype.value = 'search';
-};
-
-TypeAheadControl.prototype.handleChange = function() {
-
- var val = this.textBox.value;
- var res = this.getPossible(val);
-
-
- if (0 == res.length || this.maxResults < res.length) {
- this.hideDrop();
- this.doUnselected();
- this.results = [];
- this.dropDown.current = -1;
- } else {
- this.results = res;
- this.populateDropDown(res);
- if (1 == res.length) {
- this.select(this.dropDown.childNodes[0]);
- this.doSelected();
- } else {
- this.doUnselected();
- }
- }
-};
-
-//
-// A lot of the stuff below comes from
-// http://www.webreference.com/programming/javascript/ncz/column2
-//
-// With thanks to Nicholas C Zakas
-//
-TypeAheadControl.prototype.populateDropDown = function(list) {
- this.dropDown.innerHTML = '';
- var i = 0;
- var div;
- while (i < list.length) {
- div = document.createElement('div');
- div.appendChild(document.createTextNode(list[i][0]));
-// div.style.zIndex = '1000';
- this.dropDown.appendChild(div);
- i++;
- }
- var off = this.getXY();
- this.dropDown.style.left = off[0] + 'px';
- this.dropDown.style.top = off[1] + 'px';
- this.showDrop();
-};
-
-TypeAheadControl.prototype.getXY = function() {
-
- var node = this.textBox;
- var sumX = 0;
- var sumY = node.offsetHeight;
-
- while(node.tagName != 'BODY') {
- sumX += node.offsetLeft;
- sumY += node.offsetTop;
- node = node.offsetParent;
- }
- //
- // And add in the offset for the Body
- //
- sumX += node.offsetLeft;
- sumY += node.offsetTop;
-
- return [sumX, sumY];
-};
-
-TypeAheadControl.prototype.select = function(selected) {
- var i = 0;
- var node;
- this.dropDown.current = -1;
- this.doUnselected();
- while (i < this.dropDown.childNodes.length) {
- node = this.dropDown.childNodes[i];
- if (node == selected) {
- //
- // Highlight it
- //
- node.className = 'current';
- //
- // turn on the button
- //
- this.doSelected();
- //
- // setup the cursor
- //
- this.dropDown.current = i;
- //
- // and the value for the Server
- //
- this.origin.value = this.results[i][1];
- this.origin.textValue = this.results[i][0];
- } else {
- node.className = '';
- }
- i++;
- }
- this.textBox.focus();
-};
-
-TypeAheadControl.prototype.downSelect = function() {
- if (this.results.length > 0) {
-
- if (-1 == this.dropDown.current) {
- //
- // mimic a select()
- //
- this.dropDown.current = 0;
- this.dropDown.childNodes[0].className = 'current';
- this.doSelected();
- this.origin.value = this.results[0][1];
- this.origin.textValue = this.results[0][0];
-
- } else if (this.dropDown.current < (this.results.length-1)) {
- //
- // turn off highlight
- //
- this.dropDown.childNodes[this.dropDown.current].className = '';
- //
- // move cursor
- //
- this.dropDown.current++;
- //
- // and 'select'
- //
- this.dropDown.childNodes[this.dropDown.current].className = 'current';
- this.doSelected();
- this.origin.value = this.results[this.dropDown.current][1];
- this.origin.textValue = this.results[this.dropDown.current][0];
- }
- }
-};
-
-
-TypeAheadControl.prototype.upSelect = function() {
- if ((this.results.length > 0) &&
- (this.dropDown.current > 0)) {
-
- //
- // turn off highlight
- //
- this.dropDown.childNodes[this.dropDown.current].className = '';
- //
- // move cursor
- //
- this.dropDown.current--;
- //
- // and 'select'
- //
- this.dropDown.childNodes[this.dropDown.current].className = 'current';
- this.doSelected();
- this.origin.value = this.results[this.dropDown.current][1];
- this.origin.textValue = this.results[this.dropDown.current][0];
- }
-}; \ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/tlds/struts-bean.tld b/src/main/webapp/WEB-INF/tlds/struts-bean.tld
index 7e95a46..d8e4425 100644..100755
--- a/src/main/webapp/WEB-INF/tlds/struts-bean.tld
+++ b/src/main/webapp/WEB-INF/tlds/struts-bean.tld
@@ -1,1152 +1,346 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- $Id: struts-bean.tld 481833 2006-12-03 17:32:52Z niallp $
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!DOCTYPE taglib
- PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
- "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
-<taglib>
- <tlib-version>1.3</tlib-version>
- <jsp-version>1.2</jsp-version>
- <short-name>bean</short-name>
- <uri>http://struts.apache.org/tags-bean</uri>
- <description>
- <![CDATA[
- <p><strong>Note: Some of the features in this taglib are also
- available in the <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
- The Struts team encourages the use of the standard tags over the Struts
- specific tags when possible.</strong></p>
-
- <p>This tag library contains tags useful in accessing beans and their
- properties, as well as defining new beans (based on these accesses)
- that are accessible to the remainder of the page via scripting variables
- and page scope attributes. Convenient mechanisms to create new beans
- based on the value of request cookies, headers, and parameters are also
- provided.</p>
-
- <p>Many of the tags in this tag library will throw a
- <code>JspException</code> at runtime when they are utilized incorrectly
- (such as when you specify an invalid combination of tag attributes). JSP
- allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
- directive. If you wish to process the actual exception that caused the
- problem, it is passed to the error page as a request attribute under key
- <code>org.apache.struts.action.EXCEPTION</code>.</p>
-
- ]]>
- </description>
- <tag>
- <name>cookie</name>
- <tag-class>org.apache.struts.taglib.bean.CookieTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.CookieTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Define a scripting variable based on the value(s) of the specified
- request cookie.
- </strong></p>
-
- <p>Retrieve the value of the specified request cookie (as a single
- value or multiple values, depending on the <code>multiple</code> attribute),
- and define the result as a page scope attribute of type <code>Cookie</code>
- (if <code>multiple</code> is not specified) or <code>Cookie[]</code>
- (if <code>multiple</code> is specified).</p>
-
- <p>If no cookie with the specified name can be located, and no default
- value is specified, a request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified request cookie.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>multiple</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If any arbitrary value for this attribute is specified, causes all
- matching cookies to be accumulated and stored into a bean of type
- <code>Cookie[]</code>. If not specified, the first value for the
- specified cookie will be retrieved as a value of type
- <code>Cookie</code>.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the request cookie whose value, or values,
- is to be retrieved.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The default cookie value to return if no cookie with the
- specified name was included in this request.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>define</name>
- <tag-class>org.apache.struts.taglib.bean.DefineTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.DefineTei</tei-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Define a scripting variable based on the value(s) of the specified
- bean property.
- </strong></p>
-
- <p>Create a new attribute (in the scope specified by the
- <code>toScope</code> property, if any), and a corresponding scripting
- variable, both of which are named by the value of the <code>id</code>
- attribute. The corresponding value to which this new attribute (and
- scripting variable) is set are specified via use of exactly one of the
- following approaches (trying to use more than one will result in a
- JspException being thrown):</p>
- <ul>
- <li>Specify a <code>name</code> attribute (plus optional
- <code>property</code> and <code>scope</code> attributes) -
- The created attribute and scripting variable will be of the type of the
- retrieved JavaBean property, unless it is a Java primitive type,
- in which case it will be wrapped in the appropriate wrapper class
- (i.e. int is wrapped by java.lang.Integer).</li>
- <li>Specify a <code>value</code> attribute - The created attribute and
- scripting variable will be of type <code>java.lang.String</code>,
- set to the value of this attribute.</li>
- <li>Specify nested body content - The created attribute and scripting
- variable will be of type <code>java.lang.String</code>, set to
- the value of the nested body content.</li>
- </ul>
-
- <p>If a problem occurs while retrieving the specified bean property, a
- request time exception will be thrown.</p>
-
- <p>The <code>&lt;bean:define&gt;</code> tag differs from
- <code>&lt;jsp:useBean&gt;</code> in several ways, including:</p>
- <ul>
- <li>Unconditionally creates (or replaces) a bean under the
- specified identifier.</li>
- <li>Can create a bean with the value returned by a property getter
- of a different bean (including properties referenced with a
- nested and/or indexed property name).</li>
- <li>Can create a bean whose contents is a literal string (or the result
- of a runtime expression) specified by the <code>value</code>
- attribute.</li>
- <li>Does not support nested content (such as
- <code>&lt;jsp:setProperty&gt;</code> tags) that are only executed
- if a bean was actually created.</li>
- </ul>
- <p><strong>USAGE NOTE</strong> - There is a restriction in the JSP 1.1
- Specification that disallows using the same value for an <code>id</code>
- attribute more than once in a single JSP page. Therefore, you will not
- be able to use <code>&lt;bean:define&gt;</code> for the same bean
- name more than once in a single page.</p>
- <p><strong>USAGE NOTE</strong> - If you use another tag to create the
- body content (e.g. bean:write), that tag must return a non-empty String.
- An empty String equates to an empty body or a null String, and a new
- scripting variable cannot be defined as null. Your bean must return a
- non-empty String, or the define tag must be wrapped within a logic tag
- to test for an empty or null value.</p>
- <p><strong>USAGE NOTE</strong> - You cannot use bean:define to <strong>instantiate</strong>
- a DynaActionForm (type="org.apache.struts.action.DynaActionForm") with
- the properties specified in the struts-config. The mechanics of creating
- the dyna-properties is complex and cannot be handled by a no-argument
- constructor. If you need to create an ActionForm this way, you must use
- a conventional ActionForm.
- </p>
- <p>See the Bean Developer's Guide section on
- <a href="../api/org/apache/struts/taglib/bean/package-summary.html#doc.Creation">
- bean creation</a> for more information about these differences, as well
- as alternative approaches to introducing beans into a JSP page.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified property.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the attribute name of the bean whose property is accessed
- to define a new page scope attribute (if <code>property</code> is also
- specified) or the attribute name of the bean that is duplicated with
- the new reference created by this tag (if <code>property</code> is not
- also specified). This attribute is required unless you specify
- a <code>value</code> attribute or nested body content.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the property to be accessed on the bean
- specified by <code>name</code>. This value may be a simple, indexed,
- or nested property reference expression. If not specified, the bean
- identified by <code>name</code> is given a new reference identified by
- <code>id</code>.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the variable scope searched to retrieve the bean specified
- by <code>name</code>. If not specified, the default rules applied by
- <code>PageContext.findAttribute()</code> are applied.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>toScope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the variable scope into which the newly defined bean will
- be created. If not specified, the bean will be created in
- <code>page</code> scope.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>type</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the fully qualified class name of the value to be exposed
- as the <code>id</code> attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The <code>java.lang.String</code> value to which the exposed bean
- should be set. This attribute is required unless you specify the
- <code>name</code> attribute or nested body content.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>header</name>
- <tag-class>org.apache.struts.taglib.bean.HeaderTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.HeaderTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Define a scripting variable based on the value(s) of the specified
- request header.
- </strong></p>
-
- <p>Retrieve the value of the specified request header (as a single
- value or multiple values, depending on the <code>multiple</code> attribute),
- and define the result as a page scope attribute of type <code>String</code>
- (if <code>multiple</code> is not specified) or <code>String[]</code>
- (if <code>multiple</code> is specified).</p>
- <p>If no header with the specified name can be located, and no default
- value is specified, a request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified request header.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>multiple</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If any arbitrary value for this attribute is specified, causes a call
- to <code>HttpServletRequest.getHeaders()</code> and a definition of the
- result as a bean of type <code>String[]</code>. Otherwise,
- <code>HttpServletRequest.getHeader()</code> will be called, and a
- definition of the result as a bean of type <code>String</code>
- will be performed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the request header whose value, or values,
- is to be retrieved.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The default header value to return if no header with the
- specified name was included in this request.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>include</name>
- <tag-class>org.apache.struts.taglib.bean.IncludeTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.IncludeTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Load the response from a dynamic application request and make it available
- as a bean.
- </strong></p>
-
- <p>Perform an internal dispatch to the specified application component
- (or external URL)
- and make the response data from that request available as a bean of
- type <code>String</code>. This tag has a function similar to that of
- the standard <code>&lt;jsp:include&gt;</code> tag, except that the
- response data is stored in a page scope attribute instead of being
- written to the output stream. If the current request is part of a
- session, the generated request for the include will also include the
- session identifier (and thus be part of the same session).</p>
- <p>The URL used to access the specified application component is
- calculated based on which of the following attributes you specify
- (you must specify exactly one of them):</p>
- <ul>
- <li><em>forward</em> - Use the value of this attribute as the name
- of a global <code>ActionForward</code> to be looked up, and
- use the module-relative or context-relative URI found there.</li>
- <li><em>href</em> - Use the value of this attribute unchanged (since
- this might link to a resource external to the application, the
- session identifier is <strong>not</strong> included.</li>
- <li><em>page</em> - Use the value of this attribute as an
- module-relative URI to the desired resource.</li>
- </ul>
- ]]>
- </description>
- <attribute>
- <name>anchor</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Optional anchor tag ("#xxx") to be added to the generated
- hyperlink. Specify this value <strong>without</strong> any
- "#" character.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>forward</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Logical name of a global <code>ActionForward</code> that contains
- the actual content-relative URI of the resource to be included.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>href</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Absolute URL (including the appropriate protocol prefix such as
- "http:") of the resource to be included. Because this URL could be
- external to the current web application, the session identifier will
- <strong>not</strong> be included in the request.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified web application resource.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>page</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Module-relative URI (starting with a '/') of the web application
- resource to be included.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>transaction</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>boolean</type>
- <description>
- <![CDATA[
- <p>Set to <code>true</code> if you want the current
- transaction control token included in the generated
- URL for this include.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>message</name>
- <tag-class>org.apache.struts.taglib.bean.MessageTag</tag-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Render an internationalized message string to the response.
- </strong></p>
-
- <p>Retrieves an internationalized message for the specified locale,
- using the specified message key, and write it to the output stream.
- Up to five parametric replacements (such as "{0}") may be specified.</p>
-
- <p>The message key may be specified directly, using the <code>key</code>
- attribute, or indirectly, using the <code>name</code> and
- <code>property</code> attributes to obtain it from a bean.</p>
-
- <p>
- <strong>JSTL</strong>: The equivalent JSTL tag is &lt;fmt:message&gt;. For example,
- <br/>
- <code>
- &lt;fmt:message key="my.msg.key"&gt;
- &lt;fmt:param value="replacement text"/&gt;
- &lt;/fmt:message&gt;
- </code>
- </p>
- ]]>
- </description>
- <attribute>
- <name>arg0</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>First parametric replacement value, if any.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>arg1</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Second parametric replacement value, if any.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>arg2</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Third parametric replacement value, if any.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>arg3</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Fourth parametric replacement value, if any.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>arg4</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Fifth parametric replacement value, if any.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>bundle</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the application scope bean under which the
- <code>MessageResources</code> object containing our messages
- is stored.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>key</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The message key of the requested message, which must have
- a corresponding value in the message resources. If not specified,
- the key is obtained from the <code>name</code> and
- <code>property</code> attributes.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>locale</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the session scope bean under which our currently
- selected <code>Locale</code> object is stored.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the attribute name of the bean whose property is accessed
- to retrieve the value specified by <code>property</code> (if
- specified). If <code>property</code> is not specified, the value of
- this bean itself will be used as the message resource key.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the property to be accessed on the bean
- specified by <code>name</code>. This value may be a simple, indexed,
- or nested property reference expression. If not specified, the value
- of the bean identified by <code>name</code> will itself be used as the
- message resource key.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the variable scope searched to retrieve the bean specified
- by <code>name</code>. If not specified, the default rules applied by
- <code>PageContext.findAttribute()</code> are applied.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>page</name>
- <tag-class>org.apache.struts.taglib.bean.PageTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.PageTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Expose a specified item from the page context as a bean.
- </strong></p>
-
- <p>Retrieve the value of the specified item from the page context
- for this page, and define it as a scripting variable, and a page scope
- attribute accessible to the remainder of the current page.</p>
-
- <p>If a problem occurs while retrieving the specified configuration
- object, a request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated
- page scope attribute) that will be made available with the value of
- the specified page context property.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Name of the property from our page context to be retrieved and
- exposed. Must be one of <code>application</code>, <code>config</code>,
- <code>request</code>, <code>response</code>, or <code>session</code>.
- </p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>parameter</name>
- <tag-class>org.apache.struts.taglib.bean.ParameterTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.ParameterTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Define a scripting variable based on the value(s) of the specified
- request parameter.
- </strong></p>
-
- <p>Retrieve the value of the specified request parameter (as a single
- value or multiple values, depending on the <code>multiple</code> attribute),
- and define the result as a page scope attribute of type <code>String</code>
- (if <code>multiple</code> is not specified) or <code>String[]</code>
- (if <code>multiple</code> is specified).</p>
-
- <p>If no request parameter with the specified name can be located, and
- no default value is specified, a request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified request parameter.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>multiple</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If any arbitrary value for this attribute is specified, causes a call
- to <code>ServletRequest.getParameterValues()</code> and a definition of
- the result as a bean of type <code>String[]</code>. Otherwise,
- <code>ServletRequest.getParameter()</code> will be called, and a
- definition of the result as a bean of type <code>String</code>
- will be performed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the request parameter whose value, or values,
- is to be retrieved.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The default parameter value to return if no parameter with the
- specified name was included in this request.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>resource</name>
- <tag-class>org.apache.struts.taglib.bean.ResourceTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.ResourceTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Load a web application resource and make it available as a bean.
- </strong></p>
-
- <p>Retrieve the value of the specified web application resource, and make
- it available as either a <code>InputStream</code> or a <code>String</code>,
- depending on the value of the <code>input</code> attribute.</p>
-
- <p>If a problem occurs while retrieving the specified resource, a
- request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated page
- scope attribute) that will be made available with the value of the
- specified web application resource.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>input</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If any arbitrary value for this attribute is specified, the resource
- will be made available as an <code>InputStream</code>. If this
- attribute is not specified, the resource will be made available
- as a <code>String</code>.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Module-relative name (starting with a '/') of the web application
- resource to be loaded and made available.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>size</name>
- <tag-class>org.apache.struts.taglib.bean.SizeTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.SizeTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Define a bean containing the number of elements in a Collection or Map.
- </strong></p>
-
- <p>Given a reference to an array, Collection or Map, creates a new bean, of
- type <code>java.lang.Integer</code>, whose value is the number of elements
- in that collection. You can specify the collection to be counted in any
- one of the following ways:</p>
- <ul>
- <li>As a runtime expression specified as the value of the
- <code>collection</code> attribute.</li>
- <li>As a JSP bean specified by the <code>name</code> attribute.</li>
- <li>As the property, specified by the <code>property</code> attribute,
- of the JSP bean specified by the <code>name</code> attribute.</li>
- </ul>
- ]]>
- </description>
- <attribute>
- <name>collection</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>java.lang.Object</type>
- <description>
- <![CDATA[
- <p>A runtime expression that evaluates to an array, a Collection, or
- a Map.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a page scope JSP bean, of type
- <code>java.lang.Integer</code>, that will be created to contain the
- size of the underlying collection being counted.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the JSP bean (optionally constrained to the scope
- specified by the <code>scope</code> attribute) that contains the
- collection to be counted (if <code>property</code> is not specified),
- or whose property getter is called to return the collection to be
- counted (if <code>property</code> is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the property, of the bean specified by the
- <code>name</code> attribute, whose getter method will return the
- collection to be counted.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the JSP bean specified
- by the <code>name</code> attribute. If not specified, the available
- scopes are searched in ascending sequence.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>struts</name>
- <tag-class>org.apache.struts.taglib.bean.StrutsTag</tag-class>
- <tei-class>org.apache.struts.taglib.bean.StrutsTei</tei-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Expose a named Struts internal configuration object as a bean.
- </strong></p>
-
- <p>Retrieve the value of the specified Struts internal configuration
- object, and define it as a scripting variable and as a page scope
- attribute accessible to the remainder of the current page. You must
- specify exactly one of the <code>formBean</code>, <code>forward</code>,
- and <code>mapping</code> attributes to select the configuration object
- to be exposed.</p>
-
- <p>If a problem occurs while retrieving the specified configuration
- object, a request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the scripting variable (and associated
- page scope attribute) that will be made available with the value of
- the specified Struts internal configuration object.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>formBean</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the Struts <code>ActionFormBean</code>
- definition object to be exposed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>forward</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the global Struts <code>ActionForward</code>
- definition object to be exposed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>mapping</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the matching path of the Struts <code>ActionMapping</code>
- definition object to be exposed.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>write</name>
- <tag-class>org.apache.struts.taglib.bean.WriteTag</tag-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Render the value of the specified bean property to the current
- JspWriter.
- </strong></p>
-
- <p>Retrieve the value of the specified bean property, and render it to the
- current JspWriter as a String by the ways:</p>
- <ul>
- <li>If <code>format</code> attribute exists then value will be formatted on base of format
- string from <code>format</code> attribute and default system locale.</li>
- <li>If in resources exists format string for value data type (view <code>format</code>
- attribute description) then value will be formatted on base of format string
- from resources. Resources bundle and target locale can be specified with
- <code>bundle</code> and <code>locale</code> attributes. If nothing specified then
- default resource bundle and current user locale will be used.</li>
- <li>If there is a PropertyEditor configured for the property value's class, the
- <code>getAsText()</code> method will be called.</li>
- <li>Otherwise, the usual <code>toString()</code> conversions will be applied.</li>
- </ul>
- <p>When a format string is provided, numeric values are formatted using the
- <code>java.text.DecimalFormat</code> class; if the format string came from
- a resource, the <code>applyLocalisedPattern()</code> method is used, and
- <code>applyPattern()</code> is used otherwise. Dates are formatted using
- the <code>SimpleDateFormat</code> class. For details of the specific format
- patterns, please see the Javadocs for those classes.</p>
- <p>If a problem occurs while retrieving the specified bean property, a
- request time exception will be thrown.</p>
- ]]>
- </description>
- <attribute>
- <name>bundle</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the application scope bean under which the
- <code>MessageResources</code> object containing our messages
- is stored.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>filter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>boolean</type>
- <description>
- <![CDATA[
- <p>If this attribute is set to <code>true</code>, the rendered property
- value will be filtered for characters that are sensitive in HTML, and any
- such characters will be replaced by their entity equivalents.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>format</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the format string to use to convert bean or property value
- to the <code>String</code>. If nothing specified, then default format
- string for value data type will be searched in message resources by
- according key.</p>
-<!-- move to developers guide
- <table>
- <tr>
- <td>Key to search format string</td>
- <td>Data types</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.int</td>
- <td>java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long,
- java.math.BigInteger</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.float</td>
- <td>java.lang.Float, java.lang.Double, java.math.BigDecimal</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.sql.timestamp</td>
- <td>java.sql.Timestamp</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.sql.date</td>
- <td>java.sql.Date</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.sql.time</td>
- <td>java.sql.Time</td>
- </tr>
- <tr>
- <td>org.apache.struts.taglib.bean.format.date</td>
- <td>java.util.Date</td>
- </tr>
- </table>
- <p>Default format strings in resources can be written as - <br />
- <pre>
- org.apache.struts.taglib.bean.format.int=######
- org.apache.struts.taglib.bean.format.float=######,####
- org.apache.struts.taglib.bean.format.sql.timestamp=hh 'o''clock' a, zzzz
- org.apache.struts.taglib.bean.format.sql.date=EEE, MMM d, ''yy
- org.apache.struts.taglib.bean.format.sql.time=h:mm a
- org.apache.struts.taglib.bean.format.date=hh 'o''clock' a, zzzz
- </pre>
- <br />values for resource file entries are standart Java format strings for
- date, time and number values.</p>
--->
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>formatKey</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the key to search format string in application resources.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>ignore</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>boolean</type>
- <description>
- <![CDATA[
- <p>If this attribute is set to <code>true</code>, and the bean specified
- by the <code>name</code> and <code>scope</code> attributes does not
- exist, simply return without writing anything. If this attribute is
- set to <code>false</code>, a runtime exception to be thrown,
- consistent with the other tags in this tag library.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>locale</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the session scope bean under which our currently
- selected <code>Locale</code> object is stored.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the attribute name of the bean whose property is accessed
- to retrieve the value specified by <code>property</code> (if
- specified). If <code>property</code> is not specified, the value of
- this bean itself will be rendered.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the name of the property to be accessed on the bean
- specified by <code>name</code>. This value may be a simple, indexed,
- or nested property reference expression. If not specified, the bean
- identified by <code>name</code> will itself be rendered. If the
- specified property returns null, no output will be rendered.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Specifies the variable scope searched to retrieve the bean specified
- by <code>name</code>. If not specified, the default rules applied by
- <code>PageContext.findAttribute()</code> are applied.</p>
- ]]>
- </description>
- </attribute>
- </tag>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+<tlibversion>1.0</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>bean</shortname>
+<uri>http://jakarta.apache.org/struts/tags-bean-1.0.2</uri>
+<tag>
+<name>cookie</name>
+<tagclass>org.apache.struts.taglib.bean.CookieTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.CookieTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>multiple</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>define</name>
+<tagclass>org.apache.struts.taglib.bean.DefineTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.DefineTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>toScope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>type</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>header</name>
+<tagclass>org.apache.struts.taglib.bean.HeaderTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.HeaderTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>multiple</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>include</name>
+<tagclass>org.apache.struts.taglib.bean.IncludeTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.IncludeTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>message</name>
+<tagclass>org.apache.struts.taglib.bean.MessageTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>arg0</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg1</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg2</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg3</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>arg4</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>key</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>page</name>
+<tagclass>org.apache.struts.taglib.bean.PageTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.PageTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>parameter</name>
+<tagclass>org.apache.struts.taglib.bean.ParameterTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.ParameterTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>multiple</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>resource</name>
+<tagclass>org.apache.struts.taglib.bean.ResourceTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.ResourceTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>input</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>size</name>
+<tagclass>org.apache.struts.taglib.bean.SizeTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>collection</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>struts</name>
+<tagclass>org.apache.struts.taglib.bean.StrutsTag</tagclass>
+<teiclass>org.apache.struts.taglib.bean.StrutsTei</teiclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>formBean</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>mapping</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>write</name>
+<tagclass>org.apache.struts.taglib.bean.WriteTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>filter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>ignore</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
</taglib>
diff --git a/src/main/webapp/WEB-INF/tlds/struts-logic.tld b/src/main/webapp/WEB-INF/tlds/struts-logic.tld
index fe638ae..bf03f24 100644..100755
--- a/src/main/webapp/WEB-INF/tlds/struts-logic.tld
+++ b/src/main/webapp/WEB-INF/tlds/struts-logic.tld
@@ -1,1892 +1,561 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- $Id: struts-logic.tld 481833 2006-12-03 17:32:52Z niallp $
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!DOCTYPE taglib
- PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
- "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
-<taglib>
- <tlib-version>1.3</tlib-version>
- <jsp-version>1.2</jsp-version>
- <short-name>logic</short-name>
- <uri>http://struts.apache.org/tags-logic</uri>
- <description>
- <![CDATA[
- <p><strong>Note: Some of the features in this taglib are also
- available in the <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
- The Struts team encourages the use of the standard tags over the Struts
- specific tags when possible.</strong></p>
-
- <p>This tag library contains tags that are useful in managing conditional
- generation of output text, looping over object collections for
- repetitive generation of output text, and application flow management.</p>
-
- <p>For tags that do value comparisons (<code>equal</code>,
- <code>greaterEqual</code>, <code>greaterThan</code>, <code>lessEqual</code>,
- <code>lessThan</code>, <code>notEqual</code>), the following rules apply:</p>
- <ul>
- <li>The specified value is examined. If it can be converted successfully
- to a <code>double</code> or a <code>long</code>, it is assumed that the
- ultimate comparison will be numeric (either floating point or integer).
- Otherwise, a String comparison will be performed.</li>
- <li>The variable to be compared to is retrieved, based on the selector
- attribute(s) (<code>cookie</code>, <code>header</code>,
- <code>name</code>, <code>parameter</code>, <code>property</code>)
- present on this tag. It will be converted to the appropriate type
- for the comparison, as determined above.</li>
- <li>If the specified variable or property returns null, it will be
- coerced to a zero-length string before the comparison occurs.</li>
- <li>The specific comparison for this tag will be performed, and the nested
- body content of this tag will be evaluated if the comparison returns
- a <code>true</code> result.</li>
- </ul>
-
- <p>For tags that do substring matching (<code>match</code>,
- <code>notMatch</code>), the following rules apply:</p>
- <ul>
- <li>The specified variable is retrieved, based on the selector attribute(s)
- (<code>cookie</code>, <code>header</code>, <code>name</code>,
- <code>parameter</code>, <code>property</code>) present on this tag.
- The variable is converted to a String, if necessary.</li>
- <li>A request time exception will be thrown if the specified variable
- cannot be retrieved, or has a null value.</li>
- <li>The specified value is checked for existence as a substring of the
- variable, in the position specified by the <code>location</code>
- attribute, as follows: at the beginning (if location is set to
- <code>start</code>), at the end (if location is set to
- <code>end</code>), or anywhere (if location is not specified).</li>
- </ul>
-
- <p>Many of the tags in this tag library will throw a
- <code>JspException</code> at runtime when they are utilized incorrectly
- (such as when you specify an invalid combination of tag attributes). JSP
- allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
- directive. If you wish to process the actual exception that caused the
- problem, it is passed to the error page as a request attribute under key
- <code>org.apache.struts.action.EXCEPTION</code>.</p>
-
- ]]>
- </description>
- <tag>
- <name>empty</name>
- <tag-class>org.apache.struts.taglib.logic.EmptyTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested variable is
- either null or an empty string.
- </strong></p>
-
- <p>This tag evaluates its nested body content only if the specified value
- is either absent (i.e. <code>null</code>), an empty string (i.e. a
- <code>java.lang.String</code> with a length of zero), or an empty
- <code>java.util.Collection</code> or <code>java.util.Map</code> (tested by
- the .isEmpty() method on the respective interface).</p>
-
- <p>
- <strong>JSTL</strong>: The equivalent JSTL tag is &lt;c:if&gt; using the
- <code>empty</code> operator. For example,
- <br/>
- <code>
- &lt;c:if test="${empty sessionScope.myBean.myProperty}"&gt;
- do something
- &lt;/c:if&gt;
- </code>
- </p>
-
- <dl><dt><b>Since:</b></dt>
- <dd>Struts 1.1</dd></dl>
- ]]>
- </description>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>equal</name>
- <tag-class>org.apache.struts.taglib.logic.EqualTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is equal to the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable and value are <strong>equal</strong>.
- </p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>forward</name>
- <tag-class>org.apache.struts.taglib.logic.ForwardTag</tag-class>
- <body-content>empty</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Forward control to the page specified by the specified ActionForward
- entry.
- </strong></p>
-
- <p>Performs a <code>PageContext.forward()</code> or
- <code>HttpServletResponse.sendRedirect()</code> call for the global
- <code>ActionForward</code> entry for the specified name. URL
- rewriting will occur automatically if a redirect is performed.</p>
- ]]>
- </description>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>
- The logical name of the global <code>ActionForward</code> entry
- that identifies the destination, and forwarding approach, to be used.
- <strong>Note</strong>: forwarding to Tiles definitions is not supported
- from this tag. You should forward to them from an Action subclass.
- </p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>greaterEqual</name>
- <tag-class>org.apache.struts.taglib.logic.GreaterEqualTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is greater than or equal to the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable is <strong>greater than or equal</strong>
- to the value.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>greaterThan</name>
- <tag-class>org.apache.struts.taglib.logic.GreaterThanTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is greater than the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable is <strong>greater than</strong>
- the value.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>iterate</name>
- <tag-class>org.apache.struts.taglib.logic.IterateTag</tag-class>
- <tei-class>org.apache.struts.taglib.logic.IterateTei</tei-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Repeat the nested body content of this tag over a specified collection.
- </strong></p>
-
- <p>Repeats the nested body content of this tag once for every element
- of the specified collection, which must be an <code>Iterator</code>,
- a <code>Collection</code>, a <code>Map</code> (whose values are to be
- iterated over), or an array. The collection to be iterated over must be
- specified in one of the following ways:</p>
- <ul>
- <li>As a runtime expression specified as the value of the
- <code>collection</code> attribute.</li>
- <li>As a JSP bean specified by the <code>name</code> attribute.</li>
- <li>As the property, specified by the <code>property</code>, of the
- JSP bean specified by the <code>name</code> attribute.</li>
- </ul>
-
- <p>The collection to be iterated over MUST conform to one of the following
- requirements in order for iteration to be successful:</p>
- <ul>
- <li>An array of Java objects or primitives.</li>
- <li>An implementation of <code>java.util.Collection</code>, including
- <code>ArrayList</code> and <code>Vector</code>.</li>
- <li>An implementation of <code>java.util.Enumeration</code>.</li>
- <li>An implementation of <code>java.util.Iterator</code>.</li>
- <li>An implementation of <code>java.util.Map</code>, including
- <code>HashMap</code>, <code>Hashtable</code>, and
- <code>TreeMap</code>. <strong>NOTE</strong> - See below for
- additional information about accessing Maps.</li>
- </ul>
- <p>Normally, each object exposed by the iterate tag is an element
- of the underlying collection you are iterating over. However, if you
- iterate over a <code>Map</code>, the exposed object is of type
- <code>Map.Entry</code> that has two properties:</p>
- <ul>
- <li><code>key</code> - The key under which this item is stored in the
- underlying Map.</li>
- <li><code>value</code> - The value that corresponds to this key.</li>
- </ul>
- <p>So, if you wish to iterate over the values of a Hashtable, you would
- implement code like the following:</p>
- <code>
- &lt;logic:iterate id="element" name="myhashtable"&gt;<br/>
- Next element is &lt;bean:write name="element" property="value"/&gt;<br/>
- &lt;/logic:iterate&gt;
- </code>
- <p>If the collection you are iterating over can contain <code>null</code>
- values, the loop will still be performed but no page scope attribute
- (named by the <code>id</code> attribute) will be created for that loop
- iteration. You can use the <code>&lt;logic:present&gt;</code> and
- <code>&lt;logic:notPresent&gt;</code> tags to test for this case.</p>
- ]]>
- </description>
- <attribute>
- <name>collection</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>java.lang.Object</type>
- <description>
- <![CDATA[
- <p>A runtime expression that evaluates to a collection (conforming to
- the requirements listed above) to be iterated over.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>id</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a page scope JSP bean that will contain the current
- element of the collection on each iteration, if it is not
- <code>null</code>.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>indexId</name>
- <required>false</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a page scope JSP bean that will contain the current
- index of the collection on each iteration.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>length</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The maximum number of entries (from the underlying collection) to be
- iterated through on this page. This can be either an integer that
- directly expresses the desired value, or the name of a JSP bean (in
- any scope) of type <code>java.lang.Integer</code> that defines the
- desired value. If not present, there will be no limit on the number
- of iterations performed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the JSP bean containing the collection to be iterated
- (if <code>property</code> is not specified), or the JSP bean whose
- property getter returns the collection to be iterated (if
- <code>property</code> is specified).</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>offset</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The zero-relative index of the starting point at which entries from
- the underlying collection will be iterated through. This can be either
- an integer that directly expresses the desired value, or the name of a
- JSP bean (in any scope) of type <code>java.lang.Integer</code> that
- defines the desired value. If not present, zero is assumed (meaning
- that the collection will be iterated from the beginning.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Name of the property, of the JSP bean specified by <code>name</code>,
- whose getter returns the collection to be iterated.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>type</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Fully qualified Java class name of the element to be exposed through
- the JSP bean named from the <code>id</code> attribute. If not present,
- no type conversions will be performed. NOTE: The actual elements of
- the collection must be assignment-compatible with this class, or a
- request time ClassCastException will occur.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>lessEqual</name>
- <tag-class>org.apache.struts.taglib.logic.LessEqualTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is less than or equal to the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable is <strong>less than or equal</strong>
- to the value.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>lessThan</name>
- <tag-class>org.apache.struts.taglib.logic.LessThanTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is less than the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable is <strong>less than</strong>
- the value.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>match</name>
- <tag-class>org.apache.struts.taglib.logic.MatchTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the specified value
- is an appropriate substring of the requested variable.
- </strong></p>
-
- <p>Matches the variable specified by one of the selector attributes
- (as a String) against the specified constant value. If the value is
- a substring (appropriately limited by the <code>location</code>
- attribute), the nested body content of this tag is evaluated.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>location</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If not specified, a match between the variable and the value may
- occur at any position within the variable string. If specified, the
- match must occur at the specified location (either <code>start</code>
- or <code>end</code>) of the variable string.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value which is checked for existence as a substring
- of the specified variable.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>messagesNotPresent</name>
- <tag-class>
- org.apache.struts.taglib.logic.MessagesNotPresentTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Generate the nested body content of this tag if the specified
- message is not present in any scope.
- </strong></p>
-
- <p>Evaluates the nested body content of this tag if
- an <code>ActionMessages</code>
- object, <code>ActionErrors</code> object, a String,
- or a String array is not present in any scope. If
- such a bean is found, nothing will be rendered.
- </p>
-
- <dl><dt><b>Since:</b></dt>
- <dd>Struts 1.1</dd></dl>
- ]]>
- </description>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The parameter key used to retrieve the message from page, request,
- session or application scope.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Name of the property for which messages should be
- retrieved. If not specified, all messages (regardless
- of property) are retrieved.
- </p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>message</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>By default the tag will retrieve the bean it will
- iterate over from the <code>Globals.ERROR_KEY</code> constant string,
- but if this attribute is set to 'true' the bean
- will be retrieved from the <code>Globals.MESSAGE_KEY</code>
- constant string. Also if this is set to 'true', any value
- assigned to the name attribute will be ignored.
- </p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>messagesPresent</name>
- <tag-class>
- org.apache.struts.taglib.logic.MessagesPresentTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Generate the nested body content of this tag if the specified
- message is present in any scope.
- </strong></p>
-
- <p>Evaluates the nested body content of this tag if
- an <code>ActionMessages</code>
- object, <code>ActionErrors</code> object, a String,
- or a String array is present in any scope. If
- such a bean is not found, nothing will be rendered.
- </p>
-
- <dl><dt><b>Since:</b></dt>
- <dd>Struts 1.1</dd></dl>
- ]]>
- </description>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The parameter key used to retrieve the message from page, request,
- session, or application scope.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Name of the property for which messages should be
- retrieved. If not specified, all messages (regardless
- of property) are retrieved.
- </p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>message</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>By default the tag will retrieve the bean it will
- iterate over from the <code>Globals.ERROR_KEY</code> constant string,
- but if this attribute is set to 'true' the bean
- will be retrieved from the <code>Globals.MESSAGE_KEY</code>
- constant string. Also if this is set to 'true', any value
- assigned to the name attribute will be ignored.
- </p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>notEmpty</name>
- <tag-class>org.apache.struts.taglib.logic.NotEmptyTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested variable is
- neither null, nor an empty string, nor an empty java.util.Collection
- (tested by the .isEmpty() method on the java.util.Collection interface).
- </strong></p>
-
- <p>This tag evaluates its nested body content only if the specified value
- is present (i.e. not <code>null</code>) and is not an empty string (i.e. a
- <code>java.lang.String</code> with a length of zero).</p>
-
- <p>
- <strong>JSTL</strong>: The equivalent JSTL tag is &lt;c:if&gt; using the
- <code>! empty</code> operator. For example,
- <br/>
- <code>
- &lt;c:if test="${ ! empty sessionScope.myBean.myProperty}"&gt;
- do something
- &lt;/c:if&gt;
- </code>
- </p>
- ]]>
- </description>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>notEqual</name>
- <tag-class>org.apache.struts.taglib.logic.NotEqualTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the requested
- variable is not equal to the specified value.
- </strong></p>
-
- <p>Compares the variable specified by one of the selector attributes
- against the specified constant value. The nested body content of this
- tag is evaluated if the variable and value are <strong>not equal</strong>.
- </p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be compared is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value to which the variable, specified by other
- attribute(s) of this tag, will be compared.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>notMatch</name>
- <tag-class>org.apache.struts.taglib.logic.NotMatchTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Evaluate the nested body content of this tag if the specified value
- is not an appropriate substring of the requested variable.
- </strong></p>
-
- <p>Matches the variable specified by one of the selector attributes
- (as a String) against the specified constant value. If the value is
- not a substring (appropriately limited by the <code>location</code>
- attribute), the nested body content of this tag is evaluated.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the value of the cookie whose
- name is specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the value of the header whose
- name is specified by this attribute. The name match is performed
- in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>location</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>If not specified, a match between the variable and the value may
- occur at any position within the variable string. If specified, the
- match must occur at the specified location (either <code>start</code>
- or <code>end</code>) of the variable string.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the JSP bean specified by this
- attribute, if <code>property</code> is not specified, or the value
- of the specified property of this bean, if <code>property</code>
- is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the first, or only, value of the
- request parameter specified by this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The variable to be matched is the property (of the bean specified
- by the <code>name</code> attribute) specified by this attribute.
- The property reference can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>value</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The constant value which is checked for existence as a substring
- of the specified variable.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>notPresent</name>
- <tag-class>org.apache.struts.taglib.logic.NotPresentTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Generate the nested body content of this tag if the specified
- value is not present in this request.
- </strong></p>
-
- <p>Depending on which attribute is specified, this tag checks the
- current request, and evaluates the nested body content of this tag
- only if the specified value <strong>is not</strong> present. Only one
- of the attributes may be used in one occurrence of this tag, unless
- you use the <code>property</code> attribute, in which case the
- <code>name</code> attribute is also required.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a cookie with the specified name.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of an HTTP header with the specified
- name. The name match is performed in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a JSP bean, in any scope, with the
- specified name. If <code>property</code> is also specified, checks
- for a non-null property value for the specified property.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of at least one occurrence of the
- specified request parameter on this request, even if the parameter
- value is a zero-length string.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a non-null property value, returned
- by a property getter method on the JSP bean (in any scope) that is
- specified by the <code>name</code> attribute. Property references
- can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>role</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks whether the currently authenticated user (if any) has been
- associated with the specified security role.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>user</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks whether the currently authenticated user principal has the
- specified name.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>present</name>
- <tag-class>org.apache.struts.taglib.logic.PresentTag</tag-class>
- <body-content>JSP</body-content>
- <description>
- <![CDATA[
- <p><strong>
- Generate the nested body content of this tag if the specified
- value is present in this request.
- </strong></p>
-
- <p>Depending on which attribute is specified, this tag checks the
- current request, and evaluates the nested body content of this tag
- only if the specified value <strong>is</strong> present. Only one
- of the attributes may be used in one occurrence of this tag, unless
- you use the <code>property</code> attribute, in which case the
- <code>name</code> attribute is also required.</p>
- ]]>
- </description>
- <attribute>
- <name>cookie</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a cookie with the specified name.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>header</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of an HTTP header with the specified
- name. The name match is performed in a case insensitive manner.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a JSP bean, in any scope, with the
- specified name. If <code>property</code> is also specified, checks
- for a non-null property value for the specified property.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>parameter</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of at least one occurrence of the
- specified request parameter on this request, even if the parameter
- value is a zero-length string.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks for the existence of a non-null property value, returned
- by a property getter method on the JSP bean (in any scope) that is
- specified by the <code>name</code> attribute. Property references
- can be simple, nested, and/or indexed.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>role</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks whether the currently authenticated user (if any) has been
- associated with any of the specified security roles. Use a comma-delimited
- list to check for multiple roles. Example:
- <code>&lt;logic:present role="role1,role2,role3"&gt;
- code.....
- &lt;/logic:present&gt;</code></p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The bean scope within which to search for the bean named by the
- <code>name</code> property, or "any scope" if not specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>user</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Checks whether the currently authenticated user principal has the
- specified name.</p>
- ]]>
- </description>
- </attribute>
- </tag>
- <tag>
- <name>redirect</name>
- <tag-class>org.apache.struts.taglib.logic.RedirectTag</tag-class>
- <description>
- <![CDATA[
- <p><strong>Render an HTTP Redirect</strong></p>
-
-
- <p>Performs an <code>HttpServletResponse.sendRedirect()</code>
- call to the hyperlink specified by the attributes to this
- tag. URL rewriting will be applied automatically, to
- maintain session state in the absence of cookies.</p>
-
- <p>The base URL for this redirect is calculated based on
- which of the following attributes you specify (you must
- specify exactly one of them):</p>
- <ul>
- <li><em>forward</em> - Use the value of this attribute as the
- name of a global <code>ActionForward</code> to be looked
- up, and use the module-relative or context-relative
- URI found there.</li>
- <li><em>href</em> - Use the value of this attribute unchanged.
- </li>
- <li><em>page</em> - Use the value of this attribute as an
- module-relative URI, and generate a server-relative
- URI by including the context path.</li>
- </ul>
-
- <p>Normally, the redirect you specify with one of the
- attributes described in the previous paragraph will be left
- unchanged (other than URL rewriting if necessary). However,
- there are two ways you can append one or more dynamically
- defined query parameters to the hyperlink -- specify a single
- parameter with the <code>paramId</code> attribute (and its
- associated attributes to select the value), or specify the
- <code>name</code> (and optional <code>property</code>)
- attributes to select a <code>java.util.Map</code> bean that
- contains one or more parameter ids and corresponding values.
- </p>
-
- <p>To specify a single parameter, use the <code>paramId</code>
- attribute to define the name of the request parameter to be
- submitted. To specify the corresponding value, use one of the
- following approaches:</p>
- <ul>
- <li><em>Specify only the <code>paramName</code> attribute</em>
- - The named JSP bean (optionally scoped by the value of the
- <code>paramScope</code> attribute) must identify a value
- that can be converted to a String.</li>
- <li><em>Specify both the <code>paramName</code> and
- <code>paramProperty</code> attributes</em> - The specified
- property getter method will be called on the JSP bean
- identified by the <code>paramName</code> (and optional
- <code>paramScope</code>) attributes, in order to select
- a value that can be converted to a String.</li>
- </ul>
-
- <p>If you prefer to specify a <code>java.util.Map</code> that
- contains all of the request parameters to be added to the
- hyperlink, use one of the following techniques:</p>
- <ul>
- <li><em>Specify only the <code>name</code> attribute</em> -
- The named JSP bean (optionally scoped by the value of
- the <code>scope</code> attribute) must identify a
- <code>java.util.Map</code> containing the parameters.</li>
- <li><em>Specify both <code>name</code> and
- <code>property</code> attributes</em> - The specified
- property getter method will be called on the bean
- identified by the <code>name</code> (and optional
- <code>scope</code>) attributes, in order to return the
- <code>java.util.Map</code> containing the parameters.</li>
- </ul>
-
- <p>As the <code>Map</code> is processed, the keys are assumed
- to be the names of query parameters to be appended to the
- hyperlink. The value associated with each key must be either
- a String or a String array representing the parameter value(s).
- If a String array is specified, more than one value for the
- same query parameter name will be created.</p>
- ]]>
- </description>
- <attribute>
- <name>action</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Logical name of a global <code>Action</code> that
- contains the actual content-relative URI of the destination
- of this transfer. This hyperlink may be dynamically
- modified by the inclusion of query parameters, as described
- in the tag description. You <strong>must</strong> specify
- exactly one of the <code>action</code> attribute, the
- <code>forward</code> attribute, the
- <code>href</code> attribute,
- or the <code>page</code> attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>anchor</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Optional anchor tag ("#xxx") to be added to the generated
- hyperlink. Specify this value <strong>without</strong> any
- "#" character.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>forward</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>Logical name of a global <code>ActionForward</code> that
- contains the actual content-relative URI of the destination
- of this redirect. This URI may be dynamically
- modified by the inclusion of query parameters, as described
- in the tag description. You <strong>must</strong> specify
- exactly one of the <code>forward</code> attribute, the
- <code>href</code> attribute, the <code>linkName</code>
- attribute, or the <code>page</code> attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>href</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The URL to which this redirect will transfer control.
- This URL may be dynamically modified
- by the inclusion of query parameters, as described in the
- tag description. You <strong>must</strong> specify
- exactly one of the <code>forward</code> attribute, the
- <code>href</code> attribute, the <code>linkName</code>
- attribute, or the <code>page</code> attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>name</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a JSP bean that contains a <code>Map</code>
- representing the query parameters (if <code>property</code>
- is not specified), or a JSP bean whose property getter is
- called to return a <code>Map</code> (if <code>property</code>
- is specified).</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>page</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The context-relative path (beginning with a "/"
- character) to which this hyperlink will transfer control
- if activated. This hyperlink may be dynamically modified
- by the inclusion of query parameters, as described in the
- tag description. You <strong>must</strong> specify exactly
- one of the <code>forward</code> attribute, the
- <code>href</code> attribute, the <code>linkName</code>
- attribute, or the <code>page</code> attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>paramId</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of the request parameter that will be dynamically
- added to the generated hyperlink. The corresponding value is
- defined by the <code>paramName</code> and (optional)
- <code>paramProperty</code> attributes, optionally scoped by
- the <code>paramScope</code> attribute</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>paramName</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a JSP bean that is a String containing the
- value for the request parameter named by <code>paramId</code>
- (if <code>paramProperty</code> is not specified), or a JSP
- bean whose property getter is called to return a String
- (if <code>paramProperty</code> is specified). The JSP bean
- is constrained to the bean scope specified by the
- <code>paramScope</code> property, if it is specified.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>paramProperty</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a property of the bean specified by the
- <code>paramName</code> attribute, whose return value must
- be a String containing the value of the request parameter
- (named by the <code>paramId</code> attribute) that will be
- dynamically added to this hyperlink.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>paramScope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The scope within which to search for the bean specified
- by the <code>paramName</code> attribute. If not specified,
- all scopes are searched.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>property</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The name of a property of the bean specified by the
- <code>name</code> attribute, whose return value must be
- a <code>java.util.Map</code> containing the query parameters
- to be added to the hyperlink. You <strong>must</strong>
- specify the <code>name</code> attribute if you specify
- this attribute.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>scope</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <description>
- <![CDATA[
- <p>The scope within which to search for the bean specified
- by the <code>name</code> attribute. If not specified, all
- scopes are searched.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>transaction</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>boolean</type>
- <description>
- <![CDATA[
- <p>Set to <code>true</code> if you want the current
- transaction control token included in the generated
- URL for this redirect.</p>
- ]]>
- </description>
- </attribute>
- <attribute>
- <name>useLocalEncoding</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- <type>boolean</type>
- <description>
- <![CDATA[
- <p>If set to <code>true</code>, LocalCharacterEncoding will be
- used, that is, the characterEncoding set to the HttpServletResponse,
- as prefered character encoding rather than UTF-8, when
- URLEncoding is done on parameters of the URL.</p>
- ]]>
- </description>
- </attribute>
- </tag>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+<tlibversion>1.0</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>logic</shortname>
+<uri>http://jakarta.apache.org/struts/tags-logic-1.0</uri>
+<tag>
+<name>equal</name>
+<tagclass>org.apache.struts.taglib.logic.EqualTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>forward</name>
+<tagclass>org.apache.struts.taglib.logic.ForwardTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>name</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>greaterEqual</name>
+<tagclass>org.apache.struts.taglib.logic.GreaterEqualTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>greaterThan</name>
+<tagclass>org.apache.struts.taglib.logic.GreaterThanTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>iterate</name>
+<tagclass>org.apache.struts.taglib.logic.IterateTag</tagclass>
+<teiclass>org.apache.struts.taglib.logic.IterateTei</teiclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>collection</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>id</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>length</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>offset</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>type</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>lessEqual</name>
+<tagclass>org.apache.struts.taglib.logic.LessEqualTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>lessThan</name>
+<tagclass>org.apache.struts.taglib.logic.LessThanTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>match</name>
+<tagclass>org.apache.struts.taglib.logic.MatchTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>location</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>notEqual</name>
+<tagclass>org.apache.struts.taglib.logic.NotEqualTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>notMatch</name>
+<tagclass>org.apache.struts.taglib.logic.NotMatchTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>location</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>notPresent</name>
+<tagclass>org.apache.struts.taglib.logic.NotPresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>role</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>user</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>present</name>
+<tagclass>org.apache.struts.taglib.logic.PresentTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>cookie</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>header</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>parameter</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>role</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>user</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>redirect</name>
+<tagclass>org.apache.struts.taglib.logic.RedirectTag</tagclass>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
</taglib>
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index c938b16..c264d13 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -12,11 +12,11 @@
<servlet-class>edu.internet2.middleware.shibboleth.wayf.WayfService</servlet-class>
<init-param>
<param-name>WAYFConfigFileLocation</param-name>
- <param-value>$DS_HOME$/conf/wayfconfig.xml</param-value>
+ <param-value>$DS_HOME$/wayfconfig.xml</param-value>
</init-param>
<init-param>
<param-name>WAYFLogConfig</param-name>
- <param-value>$DS_HOME$/conf/logging.xml</param-value>
+ <param-value>$DS_HOME$/logging.xml</param-value>
</init-param>
<init-param>
<param-name>WAYFLogConfigPollFrequency</param-name>
@@ -38,16 +38,6 @@
<url-pattern>*.wayf</url-pattern>
</servlet-mapping>
- <servlet-mapping>
- <servlet-name>WAYF</servlet-name>
- <url-pattern>/DS</url-pattern>
- </servlet-mapping>
-
- <servlet-mapping>
- <servlet-name>WAYF</servlet-name>
- <url-pattern>*.ds</url-pattern>
- </servlet-mapping>
-
<mime-mapping>
<extension>css</extension>
<mime-type>text/css</mime-type>
diff --git a/src/main/webapp/images/internet2.gif b/src/main/webapp/images/internet2.gif
index 74ecbcb..74ecbcb 100644..100755
--- a/src/main/webapp/images/internet2.gif
+++ b/src/main/webapp/images/internet2.gif
Binary files differ
diff --git a/src/main/webapp/index.htm b/src/main/webapp/index.htm
deleted file mode 100644
index 8825d6d..0000000
--- a/src/main/webapp/index.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<head>
-<meta HTTP-EQUIV="REFRESH" content="0; url=wayferror.jsp">
-</head>
-</html>
diff --git a/src/main/webapp/javascript.jsp b/src/main/webapp/javascript.jsp
deleted file mode 100644
index 274df50..0000000
--- a/src/main/webapp/javascript.jsp
+++ /dev/null
@@ -1,45 +0,0 @@
-<%@ page contentType="text/javascript;charset=UTF-8" %>
-<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
-<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
-
-<%request.setCharacterEncoding("UTF-8");%>
-<%response.setCharacterEncoding("UTF-8");%>
-
-
-var theElements = [
- <logic:iterate id="site" name="sites">
- ["<jsp:getProperty name="site" property="displayName" />", "<jsp:getProperty name="site" property="name" />"],
- </logic:iterate>
- ];
-
-var theHints = [
-
-<logic:present name="cookieList" scope="request">
-<logic:iterate id="site" name="cookieList">
- <logic:present name="entityID" scope="request">
-
- <bean:define id="returnIDParam" name="returnIDParam"/>
- <bean:define id="ei" name="entityID" />
- <bean:define id="re" name="returnX"/>
-
- [
- "<bean:write name="requestURL" />?entityID=<%= java.net.URLEncoder.encode(ei.toString(), "utf-8") %>&return=<%= java.net.URLEncoder.encode(re.toString(), "utf-8") %>&returnIDxParam=<%= java.net.URLEncoder.encode( returnIDParam.toString(), "utf-8" ) %>&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />"
- ,
- "<jsp:getProperty name="site" property="displayName" />"
- ],
- </logic:present>
- <logic:notPresent name="entityID" scope="request">
- <bean:define id="targ" name="target" />
- <bean:define id="shire" name="shire" />
- <bean:define id="pid" name="providerId" />
-
- [
- "<bean:write name="requestURL" />?target=<%= java.net.URLEncoder.encode(targ.toString(),"utf-8") %>&shire=<%= java.net.URLEncoder.encode(shire.toString(),"utf-8") %>&providerId=<%= java.net.URLEncoder.encode(pid.toString(),"utf-8") %>&time=<bean:write name="time" />&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />"
- ,
- "<jsp:getProperty name="site" property="displayName" />"
- ],
- </logic:notPresent>
-</logic:iterate>
-</logic:present>
-];
- \ No newline at end of file
diff --git a/src/main/webapp/static.html b/src/main/webapp/static.html
deleted file mode 100644
index 4f20be0..0000000
--- a/src/main/webapp/static.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<HTML>
-<!-- Collect Stylesheet from the DS - this is needed for the autosuggest stuff -->
-<link rel="stylesheet" title="normal" type="text/css"
- href="static.css" />
-<title>Static Discovery Service with centralised hinting</title>
-<Body>
-<p>
-This is a boring, but static web page which shows how an signle SP can
-configure their own "Discovery Service" without recouse to a Java
-Container but taking full advantage of the centralised cookie server
-in the Federation Discovery Service.
-</p>
-<p>This is not meant to be pretty - it is meant to be easy for SP's
-(who understand HTML) to understand and develop. It is however
-targetted at a single SP. Sites running multiple SPs and wanting a
-single Discovery will still need to deploy a real DS, or deploy this
-as an embedded wayf on each SP.
-</p>
-<p>
-There is obviously plenty of room for adding all the visual sugar and
-branding that we want at the three levels</p>
-<ul>
-<li>A World Wide "This is a Discovery" look and feel</li>
-<li>A Federation branding</li>
-<li>"Corporate" Branding</li>
-</ul>
-
-<p>Just for fun, this Discovery service points to the I2Wiki, a Shib 2
-SP (and so with an easier configuration). To make things even more
-fun it has access to metadata (mostly statically loaded) for 6
-Federations. (UK, InCommon, MAMS, Switch AcoNet and Renater)</p>
-
-<!-- This is where the real lifting starts. We start with a
-placemarker where the previously visit -->
-
-<div id="Hints"> </div>
-
-<h3>Enter Organization Name</h3>
-
-<!-- The below is for a Shib2 SP.
-
-In order to make the changes you need two know four things
-
-1) The EntityID of your SP.
-
- In this case "https://sh2testsp1.iay.org.uk/shibboleth"
-
-2) The return address for the disocvery protocol. Dpending on how you
- configure your sessioninitiators this may include other garnish (like
- &target=cookie)
-
- In this case "https://sh2testsp1.iay.org.uk/Shibboleth.sso/DS"
-
-3) The address of the Servlet running the centralized DS
-
- In this case "https://dlib-adidp.ucs.ed.ac.uk/"
-
-4) The name of the JS and Browser discovery services ("discovery/i2full.wayf"
- and "discovery/jsfull.wayf" respectively.
-
-You then need to plug them into the form below:
-
--->
-
-<form autocomplete="OFF" action="https://dlib-adidp.ucs.ed.ac.uk/discovery/i2full.wayf">
-<!-- This is where your entity goes -->
-<input type="hidden" name="entityID" value="https://sh2testsp1.iay.org.uk/shibboleth" />
-<!-- and your potentially garnished return address -->
-<input type="hidden" name="returnX" value="https://sh2testsp1.iay.org.uk/Shibboleth.sso/DS" />
-<!-- the rest is fixed -->
-<input type="hidden" name="returnIDParam" value="entityID" />
-<input type="hidden" name="action" value="search" id="selectOrSearch" />
-<input type="hidden" name="cache" value="perm" />
-<input type="hidden" name="origin" value="unspec" id="enterOrigin"/>
-<table border="0" cellpadding="0" cellspacing="0" width="400pr">
- <tr>
- <td>
- <input type="text" name="string" value="" id="enterText" tabindex="50" size="54" />
- </td><td align="right">
- <input type="submit" id="enterSubmit" value="Search"/>
- </td>
- </tr>
-</table>
-</form>
-<noscript>
-<!-- Fallback to Shibboleth DS session initiator for non-JavaScript users.
- You construct the URL using the values above -->
-<p>
-Your browser is not javascript enabled. Go to the Discovery Service <a href="https://dlib-adidp.ucs.ed.ac.uk/discovery/i2full.wayf?entityID=https://spaces.internet2.edu/shibboleth&return=https://spaces.internet2.edu/Shibboleth.sso/Login">here</a>
-</p>
-</noscript>
-<h3>Configuring</h3>
-
-Details on how to set this up this are embedded as comments in this
-web page. Currently a lot of the configuration is manual. Future
-versions will be as automatic as possible and the only configuration
-required will be the link which is displayed when there is not
-javascript enabled.
-
-
-<script language="javascript"
- type="text/javascript"
- src="https://dlib-adidp.ucs.ed.ac.uk/discovery/jsfull.wayf?entityID=https://spaces.internet2.edu/shibboleth&return=https://spaces.internet2.edu/Shibboleth.sso/Login">
- </script>
-
-<!-- Collect the autosuggest code -->
-
-<script language="javascript"
- type="text/javascript"
- src="https://dlib-adidp.ucs.ed.ac.uk/discovery/Suggest.js">
-</script>
-
-<!-- And some code to set up the rest of the page. You need to plug the DS base address in below -->
-
-<script language="javascript"
- type="text/javascript">
-
-<!--
-window.onload = function() {
-
- var wayfAddress="https://dlib-adidp.ucs.ed.ac.uk/";
- var i = 0;
- var hints = document.getElementById("Hints");
-
- //
- // Make the hints visible
- //
- if (theHints.length > 1) {
- var h3 = document.createElement("h3");
- h3.innerHTML+="Previously visited sites";
- hints.appendChild(h3);
- }
-
- //
- // And populate them
- //
- while (i < theHints.length) {
- var a = document.createElement("a");
- a.href = wayfAddress + theHints[i][0];
- a.innerHTML += theHints[i][1];
- hints.appendChild(a);
- hints.appendChild(document.createElement("p"));
- i++;
- }
-
- //
- // And set up the autohint. NOTE you can set up you own
- // site list by providing your own 2 dimensional array
- // instead of "theElements" below.
- //
- var ie6Hack = [ ];
- var control = new TypeAheadControl(theElements,
- document.getElementById("enterText"),
- document.getElementById("enterOrigin"),
- document.getElementById("enterSubmit"),
- document.getElementById("selectOrSearch"),
- ie6Hack);
- document.getElementById("enterText").focus();
-}
--->
-</script>
-</body>
-</html> \ No newline at end of file
diff --git a/src/main/webapp/static2.html b/src/main/webapp/static2.html
deleted file mode 100644
index c815f22..0000000
--- a/src/main/webapp/static2.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<HTML>
-<!-- Collect Stylesheet from the DS - this is needed for the autosuggest stuff -->
-<link rel="stylesheet" title="normal" type="text/css"
- href="static.css" />
-<title>Static Discovery Service with centralised hinting</title>
-<Body>
-<p>
-This is a boring, but static web page which shows how an signle SP can
-configure their own "Discovery Service" without recouse to a Java
-Container but taking full advantage of the centralised cookie server
-in the Federation Discovery Service.
-</p>
-<p>
-This DS points at a test SP in the UK Federation, and uses the
-Shib/SAML1 protocol. It is a lot harder to configure (a lot like
-setting up one a "WAYFless URLS". Consider it motivation to upgrade
-from SAML1 to SAML2...
-</p>
-
-<!-- This is where the real lifting starts. We start with a placemarker where the previously visit -->
-<div id="Hints">
-</div>
-<h3>Enter Organization Name</h3>
-
-<!-- The below is for a Shib2 SP.
-
-In order to make the changes you need two know five things
-
-1) The EntityID of your SP.
-
- In this case "https://sh2testsp1.iay.org.uk/shibboleth"
-
-2) The return address for the login. Dpending on how you
- configure your sessioninitiators this may include other garnish (like
- &target=cookie)
-
- In this case "https://sh2testsp1.iay.org.uk/Shibboleth.sso/DS"
-
-3) The "shire" (the protocol return address)
-
- In this case "https://sh2testsp1.iay.org.uk/Shibboleth.sso/SAML/POST"
-
-4) The address of the Servlet running the centralized DS
-
- In this case "https://sh2testsp1.iay.org.uk/secure/printenv.cgi"
-
-5) The name of the JS and Browser discovery services ("discovery/i2.wayf"
- and "discovery/js.wayf" respectively.
-
-You then need to plug them into the form below:
-
-
--->
-<form autocomplete="OFF" action="https://dlib-adidp.ucs.ed.ac.uk/discovery/i2.wayf">
-<!-- This is where your entity goes -->
-<input type="hidden" name="providerId" value="https://sh2testsp1.iay.org.uk/shibboleth" />
-<!-- and your potentially garnished return address -->
-<input type="hidden" name="target" value="https://sh2testsp1.iay.org.uk/secure/printenv.cgi" />
-<!-- and the "Shire" -->
-<input type="hidden" name="shire" value="https://sh2testsp1.iay.org.uk/Shibboleth.sso/SAML/POST" />
-
-<!-- the rest is fixed -->
-<input type="hidden" name="action" value="search" id="selectOrSearch" />
-<input type="hidden" name="cache" value="perm" />
-<input type="hidden" name="origin" value="unspec" id="enterOrigin"/>
-<table border="0" cellpadding="0" cellspacing="0" width="400pr">
- <tr>
- <td>
- <input type="text" name="string" value="" id="enterText" tabindex="50" size="54" />
- </td><td align="right">
- <input type="submit" id="enterSubmit" value="Search"/>
- </td>
- </tr>
-</table>
-</form>
-<noscript>
-<!-- Fallback to Shibboleth DS session initiator for non-JavaScript users.
- You construct the URL using the values above -->
-<p>
-Your browser is not javascript enabled. Go to the Discovery Service <a href="https://dlib-adidp.ucs.ed.ac.uk/discovery/i2.wayf?entityID=https://spaces.internet2.edu/shibboleth&return=https://spaces.internet2.edu/Shibboleth.sso/Login">here</a>
-</p>
-</noscript>
-
-
-<h3>Configuring</h3>
-
-Details on how to set this up this are embedded as comments in this
-web page. Currently a lot of the configuration is manual. Although
-it would be feasible to automate this just as is planned for Shib2
-SPs, the duplication seems needless given that the product has a 9
-month shelf life.
-
-
-
-
-<!-- Collect the hints and the IdP list -->
-
-<script language="javascript"
- type="text/javascript"
- src="https://dlib-adidp.ucs.ed.ac.uk/discovery/js.wayf?shire=https%3A%2F%2Fsh2testsp1.iay.org.uk%2FShibboleth.sso%2FSAML%2FPOST&time=1249284798&target=https%3A%2F%2Fsh2testsp1.iay.org.uk%2Fsecure%2Fprintenv.cgi&providerId=https%3A%2F%2Fsh2testsp1.iay.org.uk%2Fshibboleth"
-</script>
-
-<!-- Collect the autosuggest code -->
-
-<script language="javascript"
- type="text/javascript"
- src="https://dlib-adidp.ucs.ed.ac.uk/discovery/Suggest.js">
-</script>
-
-<!-- And some code to set up the rest of the page. You need to plug the DS base address in below -->
-
-<script language="javascript"
- type="text/javascript">
-
-<!--
-window.onload = function() {
-
- var wayfAddress="https://dlib-adidp.ucs.ed.ac.uk/";
- var i = 0;
- var hints = document.getElementById("Hints");
-
- //
- // Make the hints visible
- //
- if (theHints.length > 1) {
- var h3 = document.createElement("h3");
- h3.innerHTML+="Previously visited sites";
- hints.appendChild(h3);
- }
-
- //
- // And populate them
- //
- while (i < theHints.length) {
- var a = document.createElement("a");
- a.href = wayfAddress + theHints[i][0];
- a.innerHTML += theHints[i][1];
- hints.appendChild(a);
- hints.appendChild(document.createElement("p"));
- i++;
- }
-
- //
- // And set up the autohint
- //
- var ie6Hack = [ ];
- var control = new TypeAheadControl(theElements,
- document.getElementById("enterText"),
- document.getElementById("enterOrigin"),
- document.getElementById("enterSubmit"),
- document.getElementById("selectOrSearch"),
- ie6Hack);
- document.getElementById("enterText").focus();
-
-
-}
--->
-</script>
-</body>
-</html> \ No newline at end of file
diff --git a/src/main/webapp/wayf.css b/src/main/webapp/wayf.css
index 768df92..744056b 100644
--- a/src/main/webapp/wayf.css
+++ b/src/main/webapp/wayf.css
@@ -54,21 +54,3 @@ span.warning {
text-align: center;
margin-top: 1.5em;
}
-
-div.dropdown {
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- border: 1px solid black;
- position: absolute;
-}
-
-div.dropdown div {
- background-color: white;
- cursor: default;
- padding: 0px 3px;
-}
-
-div.dropdown div.current {
- background-color: #3366cc;
- color: white;
-}
diff --git a/src/main/webapp/wayf.jsp b/src/main/webapp/wayf.jsp
index 4af36d0..35174dc 100644..100755
--- a/src/main/webapp/wayf.jsp
+++ b/src/main/webapp/wayf.jsp
@@ -1,15 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
-<%request.setCharacterEncoding("UTF-8");%>
-<%response.setCharacterEncoding("UTF-8");%>
-
<logic:present name="showComments" scope="Request">
<!-- TO CONFIGURE THIS FOR A SPECIFIC SITE
@@ -39,23 +35,8 @@
1.3 discovery protocol and need to be specified as parameters to the WAYF
entityID, return, returnIDParam are all part of the
- SAML Discovery protocol.
-
-
--->
-</logic:present>
+ SAML Discovery protocol
-<logic:notPresent name="entityID" scope="request">
-<logic:notPresent name="shire" scope="request">
-
-<jsp:forward page = "wayferror.jsp"/>
-</logic:notPresent>
-</logic:notPresent>
-
-
-<logic:present name="showComments" scope="Request">
-
-<!-- PROGRAMMING NOTE
In addition to the above. The WAYF may also supply the following to
the jsp.
@@ -115,27 +96,7 @@
"cache" preserve any selection in the _saml_idp cookie. A
value of "session" makes the cookie last for the browser
session, "perm" gives it the lifetime specified in the
- configuration file.
-
- The tabindex is hard wired. Fortunately the standard allows us to
- have duplicate numbers and says the order is the order things
- get emitted. We use these numbers
-
- 10 - Recently used sites hyperlinks
- 20 - <clear button for above>
- 25 - AutoSuggestion
- 30 Federation selection
- 40 IdP within Selection
- 50 Select button
- 60 How long to remember selector
- 70 Search entry
- 80 Search Button
- 90 List of search results
- 100 Select search result
- 110 How long to remember search results
- 120 Hyperlink to admin user.
-
--->
+ configuration file. -->
</logic:present>
@@ -159,14 +120,15 @@ Select an identity provider
<!--CONFIG-->
The Service you are trying to reach requires that you
-authenticate with your home organization, enter the name below.
+authenticate with your home institution, please select it from the
+list below.
</p>
<logic:present name="cookieList" scope="request">
<h2>
-Recently used organizations:
+Recently used institutions:
</h2>
@@ -178,7 +140,6 @@ Recently used organizations:
simulating the user having specified a permanent cookie -->
</logic:present>
-
<logic:iterate id="site" name="cookieList">
<p class="text">
<logic:present name="entityID" scope="request">
@@ -187,7 +148,7 @@ Recently used organizations:
<bean:define id="ei" name="entityID" />
<bean:define id="re" name="returnX"/>
- <a tabindex="10" href="<bean:write name="requestURL" />?entityID=<%= java.net.URLEncoder.encode(ei.toString(), "utf-8") %>&return=<%= java.net.URLEncoder.encode(re.toString(), "utf-8") %>&returnIDxParam=<%= java.net.URLEncoder.encode( returnIDParam.toString(), "utf-8" ) %>&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />">
+ <a href="<bean:write name="requestURL" />?entityID=<%= java.net.URLEncoder.encode(ei.toString(), "utf-8") %>&return=<%= java.net.URLEncoder.encode(re.toString(), "utf-8") %>&returnIDxParam=<%= java.net.URLEncoder.encode( returnIDParam.toString(), "utf-8" ) %>&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />">
<jsp:getProperty name="site" property="displayName" />
</a>
</logic:present>
@@ -195,7 +156,7 @@ Recently used organizations:
<bean:define id="targ" name="target" />
<bean:define id="shire" name="shire" />
<bean:define id="pid" name="providerId" />
- <a tabindex="10" href="<bean:write name="requestURL" />?target=<%= java.net.URLEncoder.encode(targ.toString(),"utf-8") %>&shire=<%= java.net.URLEncoder.encode(shire.toString(),"utf-8") %>&providerId=<%= java.net.URLEncoder.encode(pid.toString(),"utf-8") %>&time=<bean:write name="time" />&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />">
+ <a href="<bean:write name="requestURL" />?target=<%= java.net.URLEncoder.encode(targ.toString(),"utf-8") %>&shire=<%= java.net.URLEncoder.encode(shire.toString(),"utf-8") %>&providerId=<%= java.net.URLEncoder.encode(pid.toString(),"utf-8") %>&time=<bean:write name="time" />&cache=perm&action=selection&origin=<jsp:getProperty name="site" property="name" />">
<jsp:getProperty name="site"
property="displayName" />
</a>
@@ -213,7 +174,6 @@ Recently used organizations:
</logic:present>
<form method="get" action="ClearCache.wayf" >
- <div>
<logic:notPresent name="entityID" scope="request">
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
@@ -227,58 +187,16 @@ Recently used organizations:
<input type="hidden" name="returnX" value="<bean:write name="returnX" />" />
<input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" />
</logic:present>
- <input tabindex="20" type="submit" value="Clear" />
- </div>
+ <input type="submit" value="Clear" />
</form>
- </logic:present> <!-- Previous Selections -->
-
-<logic:present name="showComments" scope="Request">
-
-<!-- PROGRAMMING NOTE
-
- Add the "instant serach" dialogue.
-
-</logic:present>
+ </logic:present>
<div class="list">
- <logic:present name="sites" scope="request">
- <h2>
- Enter insititution name:
- </h2>
- <form autocomplete="OFF" action="">
- <div>
- <logic:notPresent name="entityID" scope="request">
- <input type="hidden" name="shire" value="<bean:write name="shire" />" />
- <input type="hidden" name="target" value="<bean:write name="target" />" />
- <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
- <logic:present name="time" scope="request">
- <input type="hidden" name="time" value="<bean:write name="time" />" />
- </logic:present>
- </logic:notPresent>
- <logic:present name="entityID" scope="request">
- <input type="hidden" name="entityID" value="<bean:write name="entityID" />" />
- <input type="hidden" name="returnX" value="<bean:write name="returnX" />" />
- <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" />
- </logic:present>
- <input type="hidden" id="enterOrigin" name="origin" value="unspec" />
- <input type="hidden" id="enterType" name="action" value="search" />
- <input type="text" id="enterText" name="string" value="" tabindex="25" size="54"/>
- <input type="submit" id="enterSubmit" value="Search"/>
- <input type="hidden" name="cache" value="perm"/>
- </div>
- </form>
- </logic:present>
-
- <h2>
-<logic:present name="showComments" scope="Request">
-
-Provide a static drop down or a dynamically republished one. - you may wish to remove this code
-
-</logic:present>
+ <h2>
-Or choose from a list:
+Choose from a list:
</h2>
@@ -286,7 +204,6 @@ Or choose from a list:
<logic:notPresent name="siteLists" scope="request">
<form method="get" action="<bean:write name="requestURL" />">
- <div>
<logic:notPresent name="entityID" scope="request">
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
@@ -301,20 +218,19 @@ Or choose from a list:
<input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" />
</logic:present>
<input type="hidden" name="action" value="selection" />
- <select name="origin" id="hackForie6" tabindex="40">
+ <select name="origin">
<logic:iterate id="site" name="sites">
<option value="<jsp:getProperty name="site" property="name" />">
<jsp:getProperty name="site" property="displayName" />
</option>
</logic:iterate>
</select>
- <input type="submit" value="Select" tabindex="50" />
- <select name="cache" tabindex="60">
+ <input type="submit" value="Select" />
+ <select name="cache">
<option value="false"> Do not remember</option>
<option value="session" selected="selected"> Remember for session</option>
<option value="perm"> Remember for a week</option>
</select>
- </div>
</form>
</logic:notPresent>
</logic:present>
@@ -339,7 +255,6 @@ Or choose from a list:
<logic:present name="siteLists" scope="request">
<form method="get" action="<bean:write name="requestURL" />">
- <div>
<logic:notPresent name="entityID" scope="request">
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
@@ -356,10 +271,10 @@ Or choose from a list:
<table id="tab">
<tr>
<th>Federation </th>
- <th>organization</th>
+ <th>Institution</th>
</tr>
<tr><td>
- <select name="FedSelector" size="10" id="FedSelect" tabindex="30"
+ <select name="FedSelector" size="10" id="FedSelect"
onchange="changedFed(this.form.origin,
this.form.FedSelector[this.form.FedSelector.selectedIndex].value);">
<logic:iterate id="siteset" name="siteLists">
@@ -387,7 +302,7 @@ Or choose from a list:
</logic:notPresent>
</select></td><td>
<input type="hidden" name="action" value="selection" />
- <select name="origin" size="10" id="originIdp" tabindex="40">
+ <select name="origin" size="10" id="originIdp">
<logic:present name="sites" scope="request">
<logic:iterate id="site" name="sites">
<option value="<jsp:getProperty name="site" property="name" />">
@@ -409,25 +324,17 @@ Or choose from a list:
</td></tr>
</table>
<p>
- <input type="submit" value="Select" tabindex="50" />
- <select name="cache" tabindex="60" >
+ <input type="submit" value="Select" />
+ <select name="cache">
<option value="false"> Do not remember</option>
<option value="session" selected="selected"> Remember for session</option>
<option value="perm"> Remember for a week</option>
</select>
</p>
- </div>
</form>
</logic:present>
</div>
-
-
<div class="search">
-
-<logic:present name="showComments" scope="Request">
-
-<!-- This is here for completeness - it shows the "old fashioned way" to do search -->
-
<span class="option">or</span>
<h2>
@@ -437,7 +344,6 @@ Search by keyword:
</h2>
<form method="get" action="<bean:write name="requestURL" />">
- <div>
<p>
<logic:notPresent name="entityID" scope="request">
@@ -455,15 +361,11 @@ Search by keyword:
</logic:present>
<input type="hidden" name="action" value="search" />
- <input type="text" name="string" tabindex="70" />
- <input type="submit" value="Search" tabindex="80" />
+ <input type="text" name="string" />
+ <input type="submit" value="Search" />
</p>
- </div>
</form>
-<!-- The end of the old code. Below is where search results go 00>
-
-</logic:present>
<logic:present name="searchResultsEmpty" scope="request">
<p class="error">
@@ -479,11 +381,10 @@ Search results:
</h3>
<form method="get" action="<bean:write name="requestURL" />">
- <div>
<ul>
<logic:iterate id="currResult" name="searchresults">
<li>
- <input type="radio" name="origin" tabindex="90" value="<jsp:getProperty name="currResult" property="name" />" />
+ <input type="radio" name="origin" value="<jsp:getProperty name="currResult" property="name" />" />
<jsp:getProperty name="currResult" property="displayName" />
</li>
</logic:iterate>
@@ -503,14 +404,13 @@ Search results:
<input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" />
</logic:present>
<input type="hidden" name="action" value="selection" />
- <input type="submit" value="Select" tabindex="100" />
- <select name="cache" tabindex="100" >
+ <input type="submit" value="Select" />
+ <select name="cache">
<option value="false"> Do not remember</option>
<option value="session" selected="selected"> Remember for session</option>
<option value="perm"> Remember for a week</option>
</select>
</p>
- </div>
</form>
</logic:present>
</div>
@@ -519,9 +419,9 @@ Search results:
<div class="footer">
<p class="text">
<!--CONFIG-->
-Need assistance? Send mail to <a tabindex="120" href="mailto:noc@nordu.net">NORDUnet NOC</a> with description.
+Need assistance? Send mail to <a href="mailto:user@domain"> administrator's name</a> with description.
</p>
- <div class="logo"><img src="images/NORDUnet2.jpg" alt="NORDUNet" /></div>
+ <div class="logo"><img src="images/internet2.gif" alt="InQueue" /></div>
</div>
<logic:present name="showComments" scope="Request">
@@ -587,59 +487,13 @@ function changedFed(X, Selected) {
}
</logic:notPresent>
+
}
-->
</script>
</logic:present>
-
-<logic:present name="sites" scope="request">
-
-<logic:present name="showComments" scope="Request">
- <!-- Load the autosuggest code.
-
- PROGRAMMING NOTE - the "ie6Hack" is to do with an issue in ie6 in which the
- psuedo drop down floats below the real dropdown. The hack is that we jsut disable
- the real drop down when the pseudo one is about. This can seem weird for some
- layouts and so if you are not deploying against ie6 you can just send an
- empty array.
- -->
-</logic:present>
- <script language="javascript" type="text/javascript" src="Suggest.js"></script>
- <script language="javascript" type="text/javascript">
-<!--
-window.onload = function() {
-
-<logic:notPresent name="siteLists" scope="request">
- var ie6Hack = [ document.getElementById("hackForie6")];
-</logic:notPresent>
-
-<logic:present name="siteLists" scope="request">
- var ie6Hack = [ document.getElementById("FedSelect"), document.getElementById("originIdp")];
-</logic:present>
- var control = new TypeAheadControl(theElements,
- document.getElementById("enterText"),
- document.getElementById("enterOrigin"),
- document.getElementById("enterSubmit"),
- document.getElementById("enterType"),
- ie6Hack);
-
-
- document.getElementById("enterText").focus();
-}
-
-
-var theElements = [
- <logic:iterate id="site" name="sites">
- ["<%= ((edu.internet2.middleware.shibboleth.wayf.IdPSite)site).getDisplayName().replace("\n","").toString() %>",
- "<jsp:getProperty name="site" property="name" />"],
- </logic:iterate>
- ];
-
--->
- </script>
-</logic:present>
-
+
</body>
</html>
diff --git a/src/main/webapp/wayferror.jsp b/src/main/webapp/wayferror.jsp
index 1fd564a..5e72816 100644..100755
--- a/src/main/webapp/wayferror.jsp
+++ b/src/main/webapp/wayferror.jsp
@@ -5,7 +5,7 @@
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
- <jsp:useBean id="requestURL" scope="request" class="java.lang.String"/>
+ <jsp:useBean id="requestURL" scope="application" class="java.lang.String"/>
<jsp:useBean id="errorText" scope="request" class="java.lang.String"/>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
@@ -24,14 +24,9 @@
<p>Please email <a href="mailto:user@domain"> administrator's name</a> and include the following error message:</p>
-<logic:notEmpty name="requestURL">
-<p class="error">Discovery Service failure at (<bean:write name="requestURL" />)</p>
+<p class="error">WAYF failure at (<bean:write name="requestURL" />)</p>
<p><bean:write name="errorText" /></p>
-</logic:notEmpty>
-<logic:empty name="requestURL">
-<p class="error">The Discovery Service should not be called directly</p>
-</logic:empty>
</body>