Spring MVC请求参数

时间:2011-07-25 20:56:33

标签: java jsp spring-mvc jstl

我有一个表单操作 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";
    }

1 个答案:

答案 0 :(得分: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