Параметр запроса Spring MVC

У меня есть страница входа с действием формы j_security_check. На данный момент в этой форме есть только два поля, а именно имя пользователя и пароль. Я хочу добавить в эту форму новый раскрывающийся список и собрать выбранное значение в контроллере, используя @RequestParam. По какой-то причине я не могу передать это раскрывающееся значение из JSP в свой контроллер, так как он выдает exception: MissingServletRequestParameterException (что происходит каждый раз, когда параметр запроса отсутствует).
В приведенном ниже коде я добавил раскрывающийся список Visuals. Нужно ли использовать здесь тег Spring:Bind? Также при успешном входе в систему элемент управления направляется на контроллер с сопоставлением запросов /controller1.html, и именно здесь я пытаюсь собрать раскрывающееся значение.

<form name="appLogin" action="j_security_check" method="POST">

<table width="100%">
    <tr>
        <td align="center">

        <table>
            <tr>
                <td>Username: </td>
                <td><input id="userName" name="j_username" value=""/></td>
            </tr>
            <tr>
                <td>Password: </td>
                <td><input name="j_password" type="password" value="" /></td>
            </tr>

                <tr>
                <td>Visual: </td>
                <td><Select name="visuals" id="visuals"/>
                      <option value="S1">S1</option>
                      <option value="S2">S2</option>
                      <option value="S3">S3</option>
                      <option value="S4">S4</option>
                    </Select>
                </td>
            </tr>

        </table>

        <table>
            <tr>
                <td>
                <button type="submit" name="submit" value="Sign In">Sign In</button>
                <input type="submit"/>
                </td>
            </tr>
        </table>
        </div>
        </div>
        </td>
    </tr>
</table>
</form>

Код контроллера:

 @RequestMapping( value = " /controller1.html", method = RequestMethod.GET )
    public String setupForm( @RequestParam(value = "visuals", required=false) String visuals,
            ModelMap model )
    {
        List<String> studentNames = new ArrayList<String>();
        List<String> teacherNames = new ArrayList<String>();


         model.addAttribute("someData", teacherNames);
         model.addAttribute("anotherData", studentNames);

        model.addAttribute("visuals", visuals);

        log.info("Role from Dropdown:  " + visuals);

        return "school/classTen";
    }

person t0mcat    schedule 25.07.2011    source источник
comment
и как выглядит метод контроллера с @RequestParam?   -  person matt b    schedule 26.07.2011
comment
Это просто простой метод, который возвращает пару списков ArrayList.   -  person t0mcat    schedule 28.07.2011
comment
Я спрашиваю, потому что, не зная, как выглядит метод контроллера, невероятно сложно устранить неполадки.   -  person matt b    schedule 28.07.2011
comment
Мэтт, дай мне несколько. Я опубликую метод контроллера.   -  person t0mcat    schedule 28.07.2011
comment
Мэтт Я добавил код контроллера.   -  person t0mcat    schedule 28.07.2011


Ответы (1)


Вам нужно создать свой собственный фильтр, расширив AbstractAuthenticationProcessingFilter

У меня нет перед глазами всего кода, но следующая статья может вам помочь:

http://mark.koli.ch/2010/07/spring-3-and-spring-security-setting-your-own-custom-j-spring-security-check-filter-processes-url.html

person danny.lesnik    schedule 25.07.2011