You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Sergey Tychina (JIRA)" <ji...@apache.org> on 2013/09/09 09:13:54 UTC
[jira] [Updated] (WW-4194) Using findValue() for value stack to
retrieve component parameters always returns not-null object for any
parameter name
[ 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