我有一个动作类,可以保存我的Cookie,如下所示:
public String execute() { // Save to cookie Cookie name = new Cookie("name", userInfo.getName() ); name.setMaxAge(60*60*24*365); // Make the cookie last a year! servletResponse.addCookie(name); }
如果提交表单,则可以在已创建并保存的浏览器中看到Cookie。用户提交时,他们将被重定向到一个新页面,该页面包含他们刚刚创建的所有已存储信息。
我希望用户能够返回到提交页面并以他们刚提交的表单查看所有信息。是否可以通过Struts2使用保存的Cookies并通过表格填写旧数据来做到这一点?
这是我的表格:
<s:textfield label="Name" name="name" key="name" tooltip="Enter your Name here"/>
要发送Cookie,您可以使用Cookie提供程序拦截器。它允许您通过实施在操作中填充Cookie CookieProvider。将此拦截器应用于操作配置,您可以覆盖拦截器配置
CookieProvider
<action ... > <interceptor-ref name="defaultStack"/> <interceptor-ref name="cookieProvider"/> ... </action>
在CookieProvider必须实现的方法,
public class MyAction extends ActionSupport implements CookieProvider { @Override public Set<Cookie> getCookies(){ Set<Cookie> cookies = new HashSet<>(); Cookie name = new Cookie("name", userInfo.getName() ); name.setMaxAge(60*60*24*365); // Make the cookie last a year! name.setPath("/"); //Make it at root. cookies.add(name); return cookies; } }
形式
<s:set var="name">${cookie["name"].value}</s:set> <s:textfield label="Name" name="name" value="%{#name}" tooltip="Enter your Name here"/>