2011-12-01 81 views
0

我想实现以下结构:servlet请求和验证

 
Servlet (GET) (put collection of X on request) 
    | 
JSP (output list of X) <-- 
    |      | 
Servlet (POST) ----------- Validation error! 
    | 
Validated OK, continue                            

我使用How to avoid Java code in JSP files?描述的模式来实现这一点,但我想知道是否有避免重新加载一个简单的方法我的X在验证阶段的集合,因为它不再位于请求对象上。我在POST阶段在请求范围中添加了一些验证消息,因此我需要能够访问这些消息。

我试图避免在这个阶段的框架,因为该项目的规模似乎并不合理。

+0

坦白得到X的收集,使用框架是合理的,只要它不是“Hello world!”应用。 – bezmax

+0

为什么您需要在验证阶段重新加载它? – BalusC

回答

4

是的。最简单的方法是将X的集合放入会话中。

鉴于HttpServletRequest,您可以通过getSession()获得其关联的HttpSession。然后,通过setAttribute()设置X收集到HttpSession,那就是:

httpRequest.getSession().setAttribute("xxxxxxx" , collectionOfX) 

然后,在Servlet(POST),可以从HttpSession通过

httpRequest.getSession().getAttribute("xxxxxxx"); 
+2

(好的做法是一旦你不再需要这个对象,就从对话中删除对象,这样你就不会浪费内存) – Fouteier

+1

如果在所有浏览器标签/窗口之间共享数据并不是问题,并且它们都会影响到它,那么它可以放在会话中。但在这种特殊情况下,它似乎是应按每个请求编辑的数据。然后我不会把它放在会话中。 – BalusC

+0

尽管在这种情况下我可以将它放在会话中,但我可以预见BalusC的观点是有效的(即它是一个特定于请求的属性)的情况。在这种情况下,我假设我别无选择,只能在“POST”中重新加载它,以便它可用于JSP中的EL标记。 –