将JSP参数从一个jsp传递到另一个jsp:代码使用HIPP



我正在尝试使用

从索引.jsp

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

然后访问页脚中的参数主.jsp使用

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

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

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

我们为此使用了标签库。成功了。

创建标记文件页脚.tag(此文件将类似于页脚.jsp)

然后在索引中.jsp使用

<customTag:footer main="true"/>

(自定义标记表示保存页脚标记的文件夹)

这将包括索引中的页脚标记.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>

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

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

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

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

最新更新