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

Java 如何处理JSP下拉列表错误处理,java,jsp,servlets,drop-down-menu,Java,Jsp,Servlets,Drop Down Menu,我正在填充数据库数据作为下拉列表中的选项 <select name="AccountType"> <option value = "1">Please Select</option> <c:forEach items="${UserItem}" var="AccountType"> <option v

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

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

当我点击提交按钮时,什么也没发生。我的下拉列表中的项目也不见了,所以我只需要返回页面。如何解决此问题?

问题在于以下两行:

long AccountType = Integer.parseInt(req.getParameter("AccountType"));
if ("1".equals(AccountType))
Integer.parseInt()
返回一个int。为什么要将它存储到长字符串中? 一旦有了这个long,就可以测试long是否等于字符串
“1”
。long永远不会等于字符串,因为它们甚至不是同一类型

任用

int accountType = Integer.parseInt(req.getParameter("AccountType"));
if (accountType == 1)


请遵守Java命名约定:变量以小写字母开头。

问题在于这两行:

long AccountType = Integer.parseInt(req.getParameter("AccountType"));
if ("1".equals(AccountType))
Integer.parseInt()
返回一个int。为什么要将它存储到长字符串中? 一旦有了这个long,就可以测试long是否等于字符串
“1”
。long永远不会等于字符串,因为它们甚至不是同一类型

任用

int accountType = Integer.parseInt(req.getParameter("AccountType"));
if (accountType == 1)



请遵守Java命名约定:变量以小写字母开头。

您在哪里提交jsp?到同一个jsp?到servlet?到您以前使用的同一个servlet?执行“errors.put()”之后,您在做什么?你在转发这个请求吗?其中?我用
String accountType=req.getParameter(“accountType”)替换了我的验证;如果(“1”.equals(accountType))
现在就可以了。唯一的问题是当我提交时,有一个或多个文本框,甚至是下拉列表,下拉列表项都不见了。为什么?您正在执行req.setAttribute(“UserItem”,UserItems);再一次?@EstebanAliverti它位于我的doGet()方法中我不知道为什么要标记
[javascript]
,所以看起来你把JSP脚本和javascript混淆了。我建议暂停一下,通过阅读一本健康的HTML/CSS/JS和Java/JSP/Servlet书籍/tutorial/resource来了解基本概念?到同一个jsp?到servlet?到您以前使用的同一个servlet?执行“errors.put()”之后,您在做什么?你在转发这个请求吗?其中?我用
String accountType=req.getParameter(“accountType”)替换了我的验证;如果(“1”.equals(accountType))
现在就可以了。唯一的问题是当我提交时,有一个或多个文本框,甚至是下拉列表,下拉列表项都不见了。为什么?您正在执行req.setAttribute(“UserItem”,UserItems);再一次?@EstebanAliverti它位于我的doGet()方法中我不知道为什么要标记
[javascript]
,所以看起来你把JSP脚本和javascript混淆了。我建议暂停一下,通过阅读一本健康的HTML/CSS/JS和Java/JSP/Servlet书籍/tutorial/resource来了解基本概念。它已经可以确定是否选择了“请选择”选项。但是,当我提交一个或多个文本,甚至下拉列表没有内容,下拉列表数据丢失后,我点击提交按钮,这是另一个不同的问题。当然,每次重新显示页面时,您都需要重新填充下拉列表。但是我调用数据的选项保留在我的doGet方法中……为什么在提交页面时,我的下拉列表项消失了?我将
list UserItems=new UserDAO().RoleTypeList()放置在;请求setAttribute(“UserItem”,UserItems)并重新填充。现在的问题是,例如,我试图留下一个文本框,没有任何项目。当我提交时,我在提交前放置的所有文本框都消失了。如何防止这种情况发生?您需要使用用户提交的内容重新填充它们<代码>
。您正在着手重新实现Stripes或Spring MVC等MVC框架帮助您做的事情,或为您做的事情:表单验证和重新填充。我尝试了您的建议。它已经可以确定是否选择了“请选择”选项。但是,当我提交一个或多个文本,甚至下拉列表没有内容,下拉列表数据丢失后,我点击提交按钮,这是另一个不同的问题。当然,每次重新显示页面时,您都需要重新填充下拉列表。但是我调用数据的选项保留在我的doGet方法中……为什么在提交页面时,我的下拉列表项消失了?我将
list UserItems=new UserDAO().RoleTypeList()放置在;请求setAttribute(“UserItem”,UserItems)并重新填充。现在的问题是,例如,我试图留下一个文本框,没有任何项目。当我提交时,我在提交前放置的所有文本框都消失了。如何防止这种情况发生?您需要使用用户提交的内容重新填充它们<代码>
。您正在着手重新实现Stripes或SpringMVC等MVC框架帮助或为您做的事情:表单验证和重新填充。
String accountType = req.getParameter("AccountType");
if ("1".equals(accountType))