2011-11-11 42 views
5

我传递参数值的方式中包括像下面访问Struts2的包括在支柱中的另一个jsp页面参数值的方式,如果标签

<s:include value="../../commonjspf/status.jspf"> 
     <s:param name="mystatus" value="%{status}"> 
     </s:param> 
    </s:include> 

其中状态变量来自于动作类在jsp页面标签。

我想访问mystatus PARAM在status.jspf页面支柱,如果标签与我的默认值进行比较。

<s:if test =""> 
    </s:if> 

<s:set name="" value =""/> 

上述任何标签。

如何访问?

请给我建议。

谢谢。

回答

4

提供给包含页面的任何附加参数都无法通过标记在呈现页面内访问,因为不会创建值栈。 有关详细信息,请参阅Struts2文档。

Struts2 Include tag

你可以,但是,通过HttpServletRequest对象或JSP页面通过scriptlet.something访问它们在servlet像

${param.ParamName} 
+0

感谢它的显示,但我想比较这个值。我如何比较这个值? –

+0

您必须通过HttpServletRequest对象或通过scriptlet从JSP页面访问它们。因此,您必须使用普通的HTTPServlet请求(如<%= request.getParameter(“type”)%>“)访问这些参数。希望这会帮助你 –

+0

我们可以设置$ {param.ParamName}到任何变量或

8

使用${param.ParamName}符号来访问它们,如在下面的参考中提到:

http://struts.apache.org/2.0.14/docs/include.html

样品代码:

第1页:

 <s:include value="testPage.jsp"> 
      <s:param name="mystatus">TestThis</s:param> 
     </s:include> 

第2页:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<s:if test='%{#attr.mystatus == "TestThis"}'> 
    This is what we want 
</s:if> 
<s:else> 
    This is not what we want 
</s:else> 
+0

感谢它的显示,但我想比较这个值。我如何比较这个值? –

+0

请参阅示例代码。 –

+1

谢谢,它也适用于我! –

2

我只是想在抛出这个作为使用struts的替代方案包括标签。

您可以改用jsp:include标签和使用Struts s:push标签把参数压入堆栈,使他们在包括页面可用时,它增加了一些额外的线条到JSP,但更灵活,你可以传递对象而不仅仅是将字符串传递到包含的JSP中。

推标签的性质意味着一旦你完成了参数从堆栈再次弹出。

主JSP

<s:push value="#{'someStringParam':'some string', 'someObjectParam': someObject}"> 
    <jsp:include page="../includes/user-tabs.jsp" /> 
    </s:push> 

包括JSP

<s:property value="someStringParam" /> 

<s:if test="someObjectParam.someValue > 10"> 
    Result! 
</s:else> 
2

大厦从詹姆斯的答案,这帮助我在我的第2页:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page isELIgnored="false" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<c:if test="${empty mystatus}"> 
    <c:set var="mystatus" value="default status here" /> 
</c:if> 
1

如果你是传递一个pag的值e到另一个(如下所示)请注意语法。您需要在您传递的名称文本周围放置单引号,否则将其视为变量的名称。

<s:include value="other.jsp"> 
    <s:param name="thevar" value="'text i want to see'" /> 
</s:include> 

然后在“other.jsp”页面,你会看到“文本我希望看到”如果你这样做如下:

${param.thevar} 

相反如果你不要将单引号在参数值属性中,您在other.jsp页面中看不到任何内容。

我只提及它,因为我已经看过很多次了。

相关问题