6

複数のページにまたがるSpringで連絡先プロセスを追加しています。最初のページはテキスト入力を取り、2番目のページは画像入力を取り、3番目のページは下書きを表示します。

先頭ページ

@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

これは、1 つの制限がある @SessionAttributes を使用して行うことができます this を確認してください。ただし、これは完全に設計に依存します。

または、以下の pesudocode を使用できます。ここでセッション API を確認してください

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 に答える