[ https://issues.apache.org/jira/browse/WW-4194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Tychina updated WW-4194: ------------------------------- Description: Calling valueStack.findValue("parameter.ANY_STRING") in a component returns not-null value even if there were no parameters passed to the component. Example: {code:title=TestAction.java|borderStyle=solid} 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; } } {code} {code:title=testaction.jsp (mapped for success result for the TestAction)|borderStyle=solid} <%@ taglib prefix="s" uri="/struts-tags" %> <s:component template="/testcomponent.jsp"> <s:param name="testval" value="1"/> </s:component> {code} {code:title=testcomponent.jsp|borderStyle=solid} <%@ 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"%> {code} This component will always print "NOT NULL" to the screen. Thanks, Sergey. was: 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. > 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: > {code:title=TestAction.java|borderStyle=solid} > 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; > } > } > {code} > {code:title=testaction.jsp (mapped for success result for the > TestAction)|borderStyle=solid} > <%@ taglib prefix="s" uri="/struts-tags" %> > <s:component template="/testcomponent.jsp"> > <s:param name="testval" value="1"/> > </s:component> > {code} > {code:title=testcomponent.jsp|borderStyle=solid} > <%@ 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"%> > {code} > 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