2011-09-17 28 views
0

私はspring mvc frameworkで作業しています。私はページに2つの提出ボタンを持っています。 2つの異なるコントローラに要求を転送している。どのように私は単一のJSPページで2つのアクションを使用することができます。 をお勧めします。1つのJSPで2つのサブミットを使用して2つのアクションを呼び出す方法

私のコントローラはJavaScriptを使用して、動的にフォームのaction属性を変更することにより、あなたはでき

1.

@RequestMapping(value = "/user/reset", method = RequestMethod.POST) 
     public String editUser(@ModelAttribute("users") User user, 
       BindingResult result) { 
      Integer uid=user.getId(); 
      User resetUser = usersService.findUser(uid); 
      resetUser.setActive(0); 
      ResetPasswordLog resetPasswordLog=new ResetPasswordLog(); 
      usersService.addUsers(resetUser); 
      resetPasswordLogService.setTempHash(uid); 
      String TEMPHASH= resetPasswordLog.getTempHash(); 
      System.out.println("www.lacas.com/reset?uid="+uid+"&th="+TEMPHASH); 
      return "redirect:/secure/user/" + uid; 

      } 

2.

@RequestMapping(value = "/user/edit", method = RequestMethod.POST) 
    public String addUser(@ModelAttribute("users") UserForm userForm, 
      BindingResult result) { 
     Map<String, String> map = new LinkedHashMap<String, String>(); 
     User user = usersService.findUser(userForm.getId()); 
     Integer userId = userForm.getId(); 

     User newUser = usersService.findUser(userForm.getEmail()); 
     user.setName(userForm.getName()); 
     if (newUser == null) { 
      user.setEmail(userForm.getEmail()); 
      user.getRoles().clear(); 
      Integer[] roleIds = userForm.getRoleIds(); 
      for (Integer roleId : roleIds) { 
       if (roleId != 0) { 
        Role role = roleService.findRole(roleId); 
        user.getRoles().add(role); 
       } 
      } 
      usersService.addUsers(user); 
      return "redirect:/secure/users/index"; 

     } else { 

      edit_exist_user = true; 
      return "redirect:/secure/user/" + userId; 

     } 
    } 

答えて

1

のとおりです。これは、フォームの場合:私は、しかし、私は春のアプリケーションに精通していないよと言って、これを前置きするつもりです

function pickDestination() 
{ 
    var a = "/user/" + document.pressed; 
    document.getElementById("myform").action = a; 
    return true; 
} 
+0

how ??あなたは私に例を与えてくれますか? – Romi

0

<form id="myform" action="#" onsubmit="return pickDestination();"> 
    <input type="submit" name="sbmitbtn" value="edit" onclick="document.pressed=this.value"/> 
    <input type="submit" name="sbmitbtn" value="reset" onclick="document.pressed=this.value"/> 
</form> 

その後、あなたのpickDestination JSの機能は次のようになります。他の多くのJavaベースのMVCシステムでは、リクエストを確認して、送信ボタンに名前を付け、アクションクラスでこれを解析するだけでこれを実現しました。

たとえば、パラメータ名で使用された送信ボタンを見つけるには、適切なメソッドを呼び出します。以下は、私が時折使用するストラットベースのソリューションの例です。あなたのSpring Controllerでサーブレットリクエストオブジェクトにアクセスできる場合は、同様のことができます。

@Override 
public String execute() throws Exception { 
    try { 
     // Check the request for a someone clicking the logout submit button 
     if (found("logout")) { 
      user.logout(); //invoke the logout method 
      session.remove("user"); 
      return SUCCESS; 
     } 

     // Check the request for a someone clicking the login submit button 
     if (found("login")) { 
      user.login(); 
      session.put("user", user);   
      return "login"; 
     } 

    // Catch any login exceptions 
    } catch (Exception e) { 
     user = null; 
     addActionError(e.getMessage()); 
     return INPUT; 
    } 

    return SUCCESS; 
} 

// The following method checks for a request paramater based on the key (String) 
// provided. If the key is not found or the value for the parameters is empty, it 
// returns false; 
private boolean found(String param) { 
    Object temp = request.getParameter(param); 
    if (temp != null) { 
     if (temp.toString().isEmpty()) { 
      return false; 
     } 
     return true; 
    } else { 
     return false; 
    } 
}  
関連する問題