как использовать два submitt в одном jsp и вызвать два действия - PullRequest
0 голосов
/ 17 сентября 2011

Я работаю с рамкой Spring MVC. У меня есть две кнопки отправки на странице. которые пересылают запрос на два разных контроллера. Как я могу использовать два действия на одной странице JSP. пожалуйста, предложите.

мой контроллер как

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;

        }
    }

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Вы можете использовать JavaScript и динамически изменять атрибут action формы.Если это ваша форма:

<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 будет выглядеть так:

function pickDestination()
{
    var a = "/user/" + document.pressed;
    document.getElementById("myform").action = a;
    return true;
}
0 голосов
/ 17 сентября 2011

Я собираюсь предвосхитить это, сказав, что я не очень знаком с Spring-приложениями, однако во многих других системах MVC на основе Java я достиг этого, просто присвоив моим кнопкам отправки имя и проанализировав это вкласс действий, проверяя запрос.

Например, найти, какая кнопка отправки использовалась по имени параметра, вызвать соответствующие методы.Ниже приведен пример решения на основе распорок, которое я иногда использую.Если вы можете получить доступ к объекту запроса сервлета в вашем контроллере Spring, вы можете сделать что-то подобное.

@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;
    }
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...