我正在填充我的数据库数据作为我的下拉列表中的选项
<select name="AccountType">
<option value = "1">Please Select</option>
<c:forEach items="${UserItem}" var="AccountType">
<option value="${AccountType.getRoleId()}">${AccountType.getRoleName()}</option>
</c:forEach>
</select>
<%
if (errors.containsKey("AccountType"))
{
out.println("<span class=\"warning\">" + errors.get("AccountType") + "</span>");
}
%>
在我的servlet中这里是代码
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
logger.debug("Add User page requested");
List<User> UserItems = new UserDAO().RoleTypeList();
req.setAttribute("UserItem", UserItems);
jsp.forward(req, resp);
}
现在确定用户是否忘记在下拉列表中选择第一个选项(请选择)我尝试了此代码
long AccountType = Integer.parseInt(req.getParameter("AccountType"));
if ("1".equals(AccountType))
{
errors.put("AccountType", "Required");
}
else if (req.getParameter("AccountType") != null && !"".equals(req.getParameter("AccountType")))
{
long RoleId = Integer.parseInt(req.getParameter("AccountType"));
emsItem.setRoleId(RoleId);
}
当我点击提交按钮时,没有任何反应。此外,我的下拉列表'项目已经消失,所以我只需要返回页面。我该如何解决这个问题?
答案 0 :(得分:1)
问题在于以下两行:
long AccountType = Integer.parseInt(req.getParameter("AccountType"));
if ("1".equals(AccountType))
Integer.parseInt()
返回一个int。你为什么要把它存放多久?
然后,一旦你有这么长,你测试long是否等于字符串"1"
。 long将永远不会等于String,因为它们甚至不是同一类型。
使用
int accountType = Integer.parseInt(req.getParameter("AccountType"));
if (accountType == 1)
或
String accountType = req.getParameter("AccountType");
if ("1".equals(accountType))
请尊重Java命名约定:变量以小写字母开头。