You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by bu...@apache.org on 2004/07/20 09:48:19 UTC

DO NOT REPLY [Bug 30202] New: - No exception handling when exposing all request params using ImportAttribute

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30202>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=30202

No exception handling when exposing all request params using ImportAttribute

           Summary: No exception handling when exposing all request params
                    using ImportAttribute
           Product: Struts
           Version: 1.1 Final
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: Tiles framework
        AssignedTo: dev@struts.apache.org
        ReportedBy: peter@finalist.com


<tiles:importAttribute /> adds all request parameters from the component 
context to the page context, however, when a 'null' value is encountered, a 
NullPointer is thrown from page.Context.setAttribute. This is handled for the 
named parameter case, like <tile:importAttribute id="id"/> but for some reason 
this exception handling is not present for the generic case. This results in 
very nondescriptive error messages.

The code below from ImportAttributeTag fixes this problem.


public int doStartTag() throws JspException
    {
      // retrieve component context
    ComponentContext compContext = (ComponentContext)pageContext.getAttribute( 
ComponentConstants.COMPONENT_CONTEXT, PageContext.REQUEST_SCOPE);
    if( compContext == null )
        throw new JspException ( "Error - tag importAttribute : no tiles 
context found." );

      // set scope
    scope = TagUtils.getScope( scopeName, PageContext.PAGE_SCOPE );

      // push attribute in requested context.
    if( name != null )
      {
      Object value = compContext.getAttribute(name);
        // Check if value exist and if we must send a runtime exception
      if( value == null )
        if(!isErrorIgnored)
          throw new JspException ( "Error - tag importAttribute : property '"+ 
name + "' not found in context. Check tag syntax" );
         else
          return SKIP_BODY;

      pageContext.setAttribute(name, value, scope);
      }
     else
      { // set all attributes
      Iterator names = compContext.getAttributeNames();
      while(names.hasNext())
        {
        String name = (String)names.next();
        if(name == null ) {
          if(!isErrorIgnored)
            throw new JspException ( "Error - tag importAttribute : 
encountered an attribute with key 'null'" );
          else
            return SKIP_BODY;
        }

        Object value = compContext.getAttribute(name);
        // Check if value exist and if we must send a runtime exception
        if( value == null ) {
          if(!isErrorIgnored)
            throw new JspException ( "Error - tag importAttribute : 
property '"+ name + "' has a value of 'null'" );
          else
            return SKIP_BODY;
        }
        pageContext.setAttribute(name, value, scope);
        } // end loop
      } // end if

      // Continue processing this page
    return SKIP_BODY;
    }

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org