Sergey Tychina created WW-4194:
----------------------------------

             Summary: Using findValue() for value stack to retrieve component 
parameters always returns not-null object for any parameter name
                 Key: WW-4194
                 URL: https://issues.apache.org/jira/browse/WW-4194
             Project: Struts 2
          Issue Type: Bug
    Affects Versions: 2.3.15.1
            Reporter: Sergey Tychina


Calling valueStack.findValue("parameter.ANY_STRING") in a component returns 
not-null value even if there were no parameters passed to the component.

Example:

TestAction.java
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Sergey Tychina
 */
public class TestAction extends ActionSupport implements ServletRequestAware {

    private HttpServletRequest request;

    public String execute() {
        return SUCCESS;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
}



testaction.jsp (mapped for success result for the TestAction)
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:component template="/testcomponent.jsp">
    <s:param name="testval" value="1"/>
</s:component>


testcomponent.jsp
<%@ page import="com.opensymphony.xwork2.util.ValueStack" %>
<%@ page import="org.apache.struts2.ServletActionContext" %>
<%
    ValueStack valueStack = (ValueStack) 
request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);
    Object foundValue = valueStack.findValue("parameters.ANY_PARAM_NAME");
%>
<%=foundValue == null ? "NULL" : "NOT NULL"%>


This component will always print "NOT NULL" to the screen.

Thanks,
  Sergey.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to