我有一个表单操作 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";
}
答案 0 :(得分:1)
您需要通过扩展AbstractAuthenticationProcessingFilter
我的眼前没有完整的代码,但以下文章可以帮助您: