在您存储的初始GET请求上自动生成一个唯一值,并将其作为隐藏的输入值传递给每个后续回发。使用此唯一值作为代表视野范围数据的会话属性的标识符。
Map<String, ViewData> viewScope = new HashMap<String, ViewData>();session.setAttribute("viewScope", viewScope);
(ViewData
代表您要在同一视图上的回溯中跟踪的特定于视图的数据)
在每个GET请求期间,请执行以下 *** 作:
String viewDataId = UUID.randomUUID().toString();viewScope.put(viewDataId, new ViewData());request.setAttribute("viewDataId", viewDataId);
在生成HTML的过程中,请执行以下 *** 作:
<input type="hidden" name="viewDataId" value="${viewDataId}" />
在每个POST请求期间,请执行以下 *** 作:
ViewData viewData = viewScope.get(request.getParameter("viewDataId"));// Get/set view-specific data in there.
确保jQuery还会传递此隐藏的输入(如果您已经正确使用
$(form).serialize()或例如AjaxForm插件来对表单进行Ajax化,那么这应该不是一个大问题)。
如果您熟悉JavaEE的MVC框架JSF,那么了解其
@ViewScoped注释与上述大致相同可能会很有用。另请参见ao
如何选择正确的bean作用域?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)