如何处理JSP下拉列表错误处理

时间:2013-01-30 13:57:29

标签: java jsp servlets drop-down-menu

我正在填充我的数据库数据作为我的下拉列表中的选项

<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);
        }

当我点击提交按钮时,没有任何反应。此外,我的下拉列表'项目已经消失,所以我只需要返回页面。我该如何解决这个问题?

1 个答案:

答案 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命名约定:变量以小写字母开头。