标题可能有点误导,因为我找不到更好的标题。
我正在处理两个jsp页面。一个处理主框架,另一个用于显示内容(当前为单个图像,但以后可能会更改)。我想使用以下内容将第二页(包含内容)包括在第一页(即主框架)中:
<jsp:directive.include file="includes/myContentPage.jsp" />
(位于主页内部)。
但是,此内容页面由servlet处理。该Servlet将所有相关数据分配给请求,内容页面将其用作$ {myAttribute},如下所示:
<img style="margin-right: 30px; margin-top: 30px;" src="${myAttribute}" />
当我调用servlet(从而调用jsp内容页面)时,它可以正确显示(因为它使用具有适当属性的他自己的请求),但是当我调用主页面(包括内容页面的页面)时,它没有显示无法正常工作。就我而言,它在请求中没有“ myAttribute”属性,因此,在这种情况下,没有属性传递给img的src标记。
我想我理解这是为什么引起的(使用主机框架页面的请求而不是内容页面的请求),以及内容请求没有真正具有请求的事实(因为servlet使用该页面而不使用其他页面)方式),那么,有什么方法可以解决这个问题?我能以某种方式告诉页面在被调用时使用此servlet吗(虽然我尝试转发它,但由于页面和servlet相互调用,导致了无限循环)。
还有其他解决方案吗?请记住,我无法触摸某些内容(例如主机页面的请求),但是可以修改与内容页面相关的任何内容(包括servlet)。也许以不同的方式包含页面而不是简单地将其包含为文件是解决方案?
一些相关代码
Servlet处理程序
request.setAttribute("myAttribute", myAttribute);
request.getRequestDispatcher("/WEB-INF/.../myContentPage.jsp").forward(request, response);
Servlet定义
@WebServlet(urlPatterns={"/myContentServlet" }, name="myContentServlet")
答案 0 :(得分:0)
好了,经过一番思考,我没有一个答案,所以我只是停止使用servlet,而是使用spring bean将内容属性注入第一个jsp页面,并丢弃了第二个。我仍然可以在页面中使用第二个具有相同弹性值的jsp。