填写已保存Cookie的表单

时间:2015-01-28 11:02:48

标签: java jsp cookies struts2 struts2-interceptors

我有一个动作类可以保存我的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,使用保存的Cookie并获取表单来填写旧数据?

这是我的表格:

<s:textfield
        label="Name"
        name="name"
        key="name" 
        tooltip="Enter your Name here"/>

1 个答案:

答案 0 :(得分:1)

要发送cookie,您可以使用cookie-provider拦截器。它允许您通过实施CookieProvider来填充操作中的Cookie。要将此拦截器应用于操作配置,您可以覆盖拦截器配置

<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"/>