如何使用此代码检查下拉列表中是否没有值?
<td width="168"><select name="OrgType" class="txtbox" tabindex="1">
<option value="1">Please choose...</option>
<%
Iterator it2 = Org_Items2.iterator();
while (it2.hasNext())
{
OrganizationItems orgItem2 = (OrganizationItems) it2.next();
//EMSItems newsItem4 = new EMSItems();
%>
<option value=<%=orgItem2.getOrgTypeId()%>><%=orgItem2.getOrgTypeName()%></option>
<%
}
%>
</select></td>
<td width="120">
<%
if (errors.containsKey("OrgType"))
{
out.println("<span class=\"warning\">" + errors.get("OrgType") + "</span>");
}
%>
</td>
然后验证码
long OrgType = Integer.parseInt(req.getParameter("OrgType"));
if ("1".equals(OrgType))
{
errors.put("OrgType", "Required");
}
else if(req.getParameter("OrgType") != null && !"".equals(req.getParameter("OrgType")))
{
long OrgTypeId = Integer.parseInt(req.getParameter("OrgType"));
emsItem.setOrgTypeId(OrgTypeId);
}
我在标题页中使用了usebean标记
<%@ page import="java.util.Iterator"%>
<%@ page import="data_registration_items.OrganizationItems"%>
<jsp:useBean id="Org_Items2" scope="request" type="java.util.List" />
但是当我试图将下拉列表的值保留为“请选择...”时,我收到了错误
java.lang.InstantiationException: bean Org_Items not found within scope
org.apache.jsp.WEB_002dINF.jsp.organization_002dregistry_jsp._jspService(organization_002dregistry_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
web_registration.OrganizationServlet.doPost(OrganizationServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
web.SecurityFilter.doFilter(SecurityFilter.java:55)
如何确认下拉列表是否传递了正确的值?
我试图删除标题中的usebean。在我的servlet中我已经有了
List<OrganizationItems> orgItems2 = new SetOrganizationType().OrgTypeList();
req.setAttribute("Org_Items2", orgItems2).
在我的doGet方法下...
在我的jsp页面中,我输入相同的代码,错误显示
Org_Items2 cannot be resolved
在选项2中我也尝试过,但发生了错误
java.lang.ClassCastException: java.util.LinkedList cannot be cast to java.util.ArrayList
答案 0 :(得分:0)
java.lang.InstantiationException:在范围
中找不到bean Org_Items
当您使用<jsp:useBean>
将抛出该异常的type
属性代替class
属性和所期望的Bean实例的不可用在指定范围。
所以基本上有两种解决方案:
事先将bean放在所需的范围内,以便<jsp:useBean>
可以找到它。
request.setAttribute("Org_Items", Org_Items);
但是,实际上,这样你根本不需要整个<jsp:useBean>
。它只能通过${Org_Items}
直接在EL中使用。
请改用class
属性,以便<jsp:useBean>
自动创建一个(如果在范围内找不到)。您应该只将FQN更改为java.util.ArrayList
,因为java.util.List
具有作为接口的默认构造函数。
<jsp:useBean id="Org_Items2" scope="request" class="java.util.ArrayList" />
无关。这段代码包含一些不良做法(using scriptlets,不尊重Java naming conventions,使用<jsp:useBean>
)。我建议您了解如何区分问题并查看our servlets wiki page。它还包含一个验证和错误处理的示例。