6

我在 Spring 中有一个添加联系人流程,它将跨越多个页面,第一页将采用文本输入,第二页将采用图像输入,第三页将显示草稿。

第一页

@RequestMapping("/addContact")
public String registerContact(@ModelAttribute Contact contact) {
 return "addContact";
}
@RequestMapping("/addContact")

第二页

@RequestMapping("/addImages")
public String registerImages(@Valid Contact contact, BindingResult result) {
 return "addImages";
}

如何维护页面之间的联系模型数据,以便我可以为用户提供在页面之间来回移动的选项?

4

2 回答 2

15

如果您有一个控制器来处理所有页面,您可以使用它@SessionAttributes来存储Contact会话中的请求之间。在最后一页之后使用SessionStatus来标记使用@SessionAttribtues完成(用于清理)。

@Controller
@SessionAttributes("contact")
public AddContactController {

    @ModelAttribute
    public Contact contact() {
        return new Contact();
    }

    @RequestMapping("/addContact")
    public String registerContact(@ModelAttribute Contact contact) {
        return "addContact";
    }

    @RequestMapping("/addImages")
    public String registerImages(@Valid @ModelAttribute Contact contact, BindingResult result) {
        return "addImages";
    }

    @RequestMapping("/save")    
    public String firstPage(@ModelAttribute Contact contact, SessionStatus status) {
      status.complete();
    }
}
于 2013-09-13T11:29:15.270 回答
1

这可以通过使用 @SessionAttributes 来完成,它有一个限制检查 this。不过,这完全取决于您的设计。

或者您可以使用下面提到的 pesudocode.Check the Session API here

Use HttpServletRequest in your RequestMapping to get request.


HttpSession session = request.getSession();//make an 

session.setAttribute("user", userDTO);


try
{
HttpSession session=request.getSession(false);
if(session!=null)
{

UserDTO userDTO = (UserDTO) session.getAttribute("user");

}

其中 userDTO 是您的对象

如何在表格中来回走动

现在为了在您的流程中来回切换。您必须创建前向和后向链接并使用会话来填充已经保存的值。

如果您需要更具体的代码,请告诉我。

于 2013-09-13T17:39:54.080 回答