【问题标题】:Passing JSP parameters from one jsp to another : code uses HIPPO将 JSP 参数从一个 jsp 传递到另一个:代码使用 HIPPO
【发布时间】:2012-12-13 17:29:19
【问题描述】:

我正在尝试将参数从一个 jsp 文件传递​​到另一个使用

来自 Index.jsp

<jsp:include page="footer.jsp">
   <jsp:param name="main" value="true"/>
</jsp:include>

然后在footer.jsp中使用访问param main

  <h1>The value : ${param.main}</h1>
  <c:choose>
    <c:when test="${param.main=='true'}">
      something
    </c:when>

但是,param.main 在 footer.jsp 中仍然为空。

我们的代码使用 HIPPO CMS。有没有办法可以在 HIPPO CMS 中将参数从一个 jsp 发送到另一个。我尝试搜索,但找不到与 HIPPO CMS 相关的任何内容。

【问题讨论】:

  • 如果将其添加到 footer.jsp 会发生什么 - ${p.键} ${p.value}
  • 这是一个例子还是你的真实代码?我会尝试 antonyn 的建议,因为它应该有效。

标签: jsp parameters hippocms


【解决方案1】:

我们为此使用了标记库。有效。

创建一个标签文件footer.tag(这个文件类似于footer.jsp)

然后在 index.jsp 中包含标签文件使用

<customTag:footer main="true"/>

(自定义标签表示保存 footer.tag 的文件夹)

这将包括 index.jsp 中的页脚标记,并且可以如上所述传递参数。

页脚标签示例:

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://www.hippoecm.org/jsp/hst/core" prefix='hst'%>

<%@ attribute name="main" required="false"%>

<p>The value of main is ${main}</p>

【讨论】:

  • 这是一个可怕的解决方法。有没有其他的传参方式?
【解决方案2】:

我设法使用以下代码解决了这个问题:

<c:set var="name" value="${value}" scope="request" />
<jsp:include page="page.jsp" />

【讨论】:

    【解决方案3】:

    Hippo 用自己的请求包装 HttpServletRequest 并为属性名称添加前缀,以访问不同组件(或浏览器窗口)中具有相同名称的属性。但是这一切都不能阻止你使用纯HttpServlet.setAttribute——只需从HstRequest获取RequestContext,然后获取HttpServletRequest

    HstRequest hstRequest = ...
    hstRequest.getRequestContext().getServletRequest().setAttribute("attributeName", new Object());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      相关资源
      最近更新 更多