我正在尝试使用
从索引.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());