2010-06-03 78 views
0

如果这是错误的方法,请提供一些更好的建议,但我目前的努力一直在试图找到一些存在的单页加载,这样我可以缓存哪些javascript/css文件已包含在内,以便只包含它们一次。我在TagSupport类子以为我可以用如何在Struts 1.x中包含javascript/css一次

(HttpServletRequest)pageContext.getRequest().getParameterMap().put(srcKey,true) 

但要求是每个JSP,不是每个页面加载所以这是一个失败。我可以在web.xml中设置一个过滤器,但似乎我必须搜索响应中的重复项并重写响应......痛苦。我可以尝试存储会话中的东西,但有清除值的头痛...任何帮助,将不胜感激。

回答

0

请求对象不是“per jsp”;这是请求对象。你可以使用你想要的“属性”地图

pageContext.getRequest().setAttribute(srcKey, Boolean.TRUE); 

编辑 —如果您正在构建与多个 HTTP请求浏览器页面,那么你就必须保持跟踪在客户端的页面上有什么脚本,以便每个连续的HTTP请求都可以包含某种隐藏参数来传递信息。或者,你可以使用会话,但正如你所说,这将是一个混乱的维护。

也许你可以更多地解释你的页面是如何构建的。

+0

我太新,对此与你争辩。我只是想告诉你我看到了什么,希望你能告诉我我失踪的事情。如果我输入doStartTag,例如,它会报告所请求的jsp的名称,例如,log pageContext.getRequest()。getRequestURI() 。如果我设置了属性,或者通过getParameterMap()放置,当req.getRequestURI开始报告新的jsp时,属性和参数似乎是新的集合。因此,如果我有两个不同的jsps试图包含prototype.js,那么我会在页面上看到它两次。思考? – Felix 2010-06-03 16:43:00

+0

@Felix我已经更新了我的答案 - 我不明白你的页面是如何工作的 – Pointy 2010-06-03 16:53:52

+0

随后的请求是由 <% - 包含脚本。 js% - > <% - 也包括script.js% - > 根据像Chrome的Web Inspector和FF的firebug这样的工具,只有一个实际的HTTP请求页面,即actionName.do。 如果没有足够的信息,我表示歉意,在重新提出问题之前,我必须多说几句。感谢您的时间。 – Felix 2010-06-03 17:12:08