Java 无法使用usebean生成错误处理程序

Java 无法使用usebean生成错误处理程序,java,jsp,servlets,Java,Jsp,Servlets,如何使用此代码检查下拉列表是否没有值 <td width="168"><select name="OrgType" class="txtbox" tabindex="1"> <option value="1">Please choose...</option> <% I

如何使用此代码检查下拉列表是否没有值

<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>
我正在我的首页中使用usebean标签

<%@ page import="java.util.Iterator"%>
<%@ page import="data_registration_items.OrganizationItems"%>
<jsp:useBean id="Org_Items2" scope="request" type="java.util.List" />
如何正确验证下拉列表是否传递了正确的值



我试图删除标题中的usebean。在我的servlet中,我已经有了

List<OrganizationItems> orgItems2 = new SetOrganizationType().OrgTypeList();
req.setAttribute("Org_Items2", orgItems2). 
在选项2中,我也尝试了,但出现了一个错误

java.lang.ClassCastException: java.util.LinkedList cannot be cast to java.util.ArrayList
java.lang.InstantiationException:在范围内找不到bean Org_项

当您使用
类型
属性而不是
属性,并且所需的bean实例在指定范围内不可用时,
将引发此异常

因此,基本上有两种解决方案:

  • 预先将bean放入所需的范围,以便
    可以找到它

    request.setAttribute("Org_Items", Org_Items);
    
    但是,实际上,这样你根本不需要整个
    。它将通过
    ${Org\u Items}
    直接在EL中提供

  • 改为使用
    属性,以便
    在作用域中找不到时自动创建一个。您应该只将FQN更改为
    java.util.ArrayList
    ,因为
    java.util.List
    作为接口没有默认构造函数

    
    
  • 另见:


    与具体问题无关。这段代码包含一些不良做法(,不尊重,使用
    )。我建议学习如何分离关注点并查看。它还包含一个验证和错误处理的示例。

    请帮助我解决这个问题:(我试图删除标题中的usebean。在我的servlet中,我已经有了req.setAttribute(“Org_Items2”,orgItems2);因此您使用的是
    LinkedList
    而不是
    ArrayList
    ?请将
    class
    属性更改为
    java.util.LinkedList
    Org_Items2 cannot be resolved
    
    java.lang.ClassCastException: java.util.LinkedList cannot be cast to java.util.ArrayList
    
    request.setAttribute("Org_Items", Org_Items);