WW-5093 - Improve tag var attribute comments.
- Minor non-code changes, driven by examination of the issue.
- Update taglib version from 2.3 to 2.6
- Apply missing @Override annotation to methods in several components.
- ContextBean - tag attribute description updated to mention scope action.
- ServletUrlRenderer - corrected code comment concerning scope of var
  attribute, corrected spelling mistake, changed URL case.
- Set - Added JavaDoc and code comment to clarify that with action scope
  the var is also assigned to page scope.  Updated tag descriptions for var
  and scope to further clarify the behaviour.
- Text - Added JavaDoc comment to clarify that if the var attribute is used
  the result is not written out, but instead saved into the action context.
- AttributeMap - Whitespace cleanup in get() method, plus added @Override
  tags to multiple methods.
diff --git a/core/pom.xml b/core/pom.xml
index f6038f6..5bb935f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -31,7 +31,7 @@
     <name>Struts 2 Core</name>
 
     <properties>
-        <tlib.version>2.3</tlib.version>
+        <tlib.version>2.6</tlib.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
diff --git a/core/src/main/java/org/apache/struts2/components/ActionComponent.java b/core/src/main/java/org/apache/struts2/components/ActionComponent.java
index af1ebd2..7cc3f43 100644
--- a/core/src/main/java/org/apache/struts2/components/ActionComponent.java
+++ b/core/src/main/java/org/apache/struts2/components/ActionComponent.java
@@ -150,10 +150,12 @@
     }
 
     @Inject
+    @Override
     public void setActionMapper(ActionMapper mapper) {
         this.actionMapper = mapper;
     }
 
+    @Override
     public boolean end(Writer writer, String body) {
         boolean end = super.end(writer, "", false);
         try {
diff --git a/core/src/main/java/org/apache/struts2/components/ActionError.java b/core/src/main/java/org/apache/struts2/components/ActionError.java
index 060c3c9..5e41b54 100644
--- a/core/src/main/java/org/apache/struts2/components/ActionError.java
+++ b/core/src/main/java/org/apache/struts2/components/ActionError.java
@@ -61,10 +61,12 @@
         super(stack, request, response);
     }
 
+    @Override
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
 
+    @Override
     protected void evaluateExtraParams() {
         boolean isEmptyList = true;
         Collection<String> actionMessages = (List) findValue("actionErrors");
diff --git a/core/src/main/java/org/apache/struts2/components/ActionMessage.java b/core/src/main/java/org/apache/struts2/components/ActionMessage.java
index 0f1680e..33a26cf 100644
--- a/core/src/main/java/org/apache/struts2/components/ActionMessage.java
+++ b/core/src/main/java/org/apache/struts2/components/ActionMessage.java
@@ -59,10 +59,12 @@
         super(stack, request, response);
     }
 
+    @Override
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
 
+    @Override
     protected void evaluateExtraParams() {
         boolean isEmptyList = true;
         Collection<String> actionMessages = (List) findValue("actionMessages");
diff --git a/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java b/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
index 48cccb2..c9785cf 100644
--- a/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
@@ -46,6 +46,7 @@
         this.openTemplate = openTemplate;
     }
 
+    @Override
     public boolean start(Writer writer) {
         boolean result = super.start(writer);
         try {
diff --git a/core/src/main/java/org/apache/struts2/components/ContextBean.java b/core/src/main/java/org/apache/struts2/components/ContextBean.java
index 8628e3a..69f393a 100644
--- a/core/src/main/java/org/apache/struts2/components/ContextBean.java
+++ b/core/src/main/java/org/apache/struts2/components/ContextBean.java
@@ -38,7 +38,7 @@
         }
     }
     
-    @StrutsTagAttribute(description="Name used to reference the value pushed into the Value Stack")
+    @StrutsTagAttribute(description="Name used to reference the value pushed into the Value Stack (scope: action).")
     public void setVar(String var) {
         if (var != null) {
             this.var = findString(var);
diff --git a/core/src/main/java/org/apache/struts2/components/GenericUIBean.java b/core/src/main/java/org/apache/struts2/components/GenericUIBean.java
index 63bb131..fbf8776 100644
--- a/core/src/main/java/org/apache/struts2/components/GenericUIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/GenericUIBean.java
@@ -134,6 +134,7 @@
         return ContainUtil.contains(obj1, obj2);
     }
 
+    @Override
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
diff --git a/core/src/main/java/org/apache/struts2/components/ListUIBean.java b/core/src/main/java/org/apache/struts2/components/ListUIBean.java
index ed50941..4dd23ca 100644
--- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java
+++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java
@@ -62,6 +62,7 @@
         super(stack, request, response);
     }
 
+    @Override
     public void evaluateExtraParams() {
         Object value = null;
 
@@ -148,6 +149,7 @@
         return ContainUtil.contains(obj1, obj2);
     }
 
+    @Override
     protected Class getValueClassType() {
         return null; // don't convert nameValue to anything, we need the raw value
     }
diff --git a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
index b8b7a3c..a302e8a 100644
--- a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
+++ b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
@@ -49,6 +49,7 @@
     private ActionMapper actionMapper;
     private UrlHelper urlHelper;
 
+    @Override
     @Inject
     public void setActionMapper(ActionMapper mapper) {
         this.actionMapper = mapper;
@@ -62,6 +63,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public void renderUrl(Writer writer, UrlProvider urlComponent) {
         String scheme = urlComponent.getHttpServletRequest().getScheme();
 
@@ -104,7 +106,8 @@
             if (StringUtils.isNotEmpty(var)) {
                 urlComponent.putInContext(result);
 
-                // add to the request and page scopes as well
+                // Note: Old comments stated that var was placed in the page scope, but interactive checks with EL on JSPs prove otherwise.
+                // Add the var attribute to the request scope as well.
                 urlComponent.getHttpServletRequest().setAttribute(var, result);
             } else {
                 try {
@@ -125,6 +128,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public void renderFormUrl(Form formComponent) {
         String namespace = formComponent.determineNamespace(formComponent.namespace, formComponent.getStack(), formComponent.request);
         String action;
@@ -233,6 +237,7 @@
     }
 
 
+    @Override
     public void beforeRenderUrl(UrlProvider urlComponent) {
         if (urlComponent.getValue() != null) {
             urlComponent.setValue(urlComponent.findString(urlComponent.getValue()));
@@ -298,7 +303,7 @@
 
     /**
      * Merge request parameters into current parameters. If a parameter is
-     * already present, than the request parameter in the current request and value atrribute
+     * already present, than the request parameter in the current request and value attribute
      * will not override its value.
      *
      * The priority is as follows:-
@@ -308,7 +313,7 @@
      *  <li>parameter from the param tag (most priority)</li>
      * </ul>
      *
-     * @param value the value attribute (url to be generated by this component)
+     * @param value the value attribute (URL to be generated by this component)
      * @param parameters component parameters
      * @param contextParameters request parameters
      */
diff --git a/core/src/main/java/org/apache/struts2/components/Set.java b/core/src/main/java/org/apache/struts2/components/Set.java
index ff1a27c..8cb1ca4 100644
--- a/core/src/main/java/org/apache/struts2/components/Set.java
+++ b/core/src/main/java/org/apache/struts2/components/Set.java
@@ -60,6 +60,8 @@
  *
  * <li>scope (String): The scope in which to assign the variable. Can be <b>application</b>, <b>session</b>,
  * <b>request</b>, <b>page</b>, or <b>action</b>. By default it is <b>action</b>.</li>
+ * 
+ * <li>Note: With the <b>action</b> scope, the variable is <em>also</em> assigned to the <b>page</b> scope.
  *
  * </ul>
  *
@@ -88,6 +90,7 @@
         super(stack);
     }
 
+    @Override
     public boolean end(Writer writer, String body) {
         ValueStack stack = getStack();
 
@@ -113,6 +116,7 @@
         } else if ("page".equalsIgnoreCase(scope)) {
             stack.setValue("#attr['" + getVar() + "']", o, false);
         } else {
+            // Default scope is action.  Note: The action acope handling also adds the var to the page scope.
             stack.getContext().put(getVar(), o);
             stack.setValue("#attr['" + getVar() + "']", o, false);
         }
@@ -120,13 +124,15 @@
         return super.end(writer, body);
     }
 
-    @StrutsTagAttribute(required=true, description="Name used to reference the value pushed into the Value Stack")
+    @StrutsTagAttribute(required=true, description="Name used to reference the value pushed into the Value Stack (default scope: action," +
+                "<em>override</em> with the scope attribute).")
+    @Override
     public void setVar(String var) {
        super.setVar(var);
     }
 
     @StrutsTagAttribute(description="The scope in which to assign the variable. Can be <b>application</b>" +
-                ", <b>session</b>, <b>request</b>, <b>page</b>, or <b>action</b>.", defaultValue="action")
+                ", <b>session</b>, <b>request</b>, <b>page</b>, or <b>action</b> (action scope <em>also</em> adds it to the page scope).", defaultValue="action")
     public void setScope(String scope) {
         this.scope = scope;
     }
diff --git a/core/src/main/java/org/apache/struts2/components/Text.java b/core/src/main/java/org/apache/struts2/components/Text.java
index 9f59e09..38cde39 100644
--- a/core/src/main/java/org/apache/struts2/components/Text.java
+++ b/core/src/main/java/org/apache/struts2/components/Text.java
@@ -52,6 +52,12 @@
  * tag will be used as default message. If no value is found, the key of the
  * message will not be written out.
  * </p>
+ * 
+ * <p>
+ * Note: If the <b>var</b> attribute is used with this tag, the tag's value will
+ * <em>not</em> be written out.  Instead the result will be saved into the
+ * action context (action scope).
+ * </p>
  * <!-- END SNIPPET: javadoc -->
  *
  * <!-- START SNIPPET: params -->
@@ -156,6 +162,7 @@
         this.escapeCsv = escapeCsv;
     }
 
+    @Override
     public boolean usesBody() {
         // overriding this to true such that EVAL_BODY_BUFFERED is return and
         // bodyContent will be valid hence, text between start & end tag will
@@ -163,6 +170,7 @@
         return true;
     }
 
+    @Override
     public boolean end(Writer writer, String body) {
         actualName = findString(name, "name", "You must specify the i18n key. Example: welcome.header");
         String defaultMessage;
@@ -189,10 +197,12 @@
         return super.end(writer, "");
     }
 
+    @Override
     public void addParameter(String key, Object value) {
         addParameter(value);
     }
 
+    @Override
     public void addParameter(Object value) {
         if (values.isEmpty()) {
             values = new ArrayList<>(4);
diff --git a/core/src/main/java/org/apache/struts2/util/AttributeMap.java b/core/src/main/java/org/apache/struts2/util/AttributeMap.java
index a6eebb4..ea088b4 100644
--- a/core/src/main/java/org/apache/struts2/util/AttributeMap.java
+++ b/core/src/main/java/org/apache/struts2/util/AttributeMap.java
@@ -52,26 +52,32 @@
         this.context = context;
     }
 
+    @Override
     public boolean isEmpty() {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public void clear() {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public boolean containsKey(Object key) {
         return (get(key) != null);
     }
 
+    @Override
     public boolean containsValue(Object value) {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public Set entrySet() {
         return Collections.EMPTY_SET;
     }
 
+    @Override
     public Object get(Object key) {
         PageContext pc = getPageContext();
 
@@ -88,9 +94,9 @@
                 return application.get(key);
             }
         } else {
-            try{
+            try {
                 return pc.findAttribute(key.toString());
-            }catch (NullPointerException npe){
+            } catch (NullPointerException npe) {
                 return null;
             }
         }
@@ -98,10 +104,12 @@
         return null;
     }
 
+    @Override
     public Set keySet() {
         return Collections.EMPTY_SET;
     }
 
+    @Override
     public Object put(Object key, Object value) {
         PageContext pc = getPageContext();
         if (pc != null) {
@@ -111,18 +119,22 @@
         return null;
     }
 
+    @Override
     public void putAll(Map t) {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public Object remove(Object key) {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public int size() {
         throw new UnsupportedOperationException(UNSUPPORTED);
     }
 
+    @Override
     public Collection values() {
         return Collections.EMPTY_SET;
     }