【问题标题】:Bind arraylist value to JSP dropdown list [duplicate]将arraylist值绑定到JSP下拉列表[重复]
【发布时间】:2011-03-15 03:39:59
【问题描述】:

我有一个包含一些数据的数组列表。我需要将该数据绑定到 JSP 中的下拉列表并获取所选索引。任何人都可以帮助我吗?

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    您可以使用 JSTL c:forEach 遍历列表(如果尚未完成,只需将 jstl-1.2.jar 放入 /WEB-INF/lib 即可安装它)。

    <select name="item">
        <c:forEach items="${list}" var="item">
            <option value="${item.value}">${item.label}</option>
        </c:forEach>
    </select>
    

    这假设您有一个List&lt;Item&gt;,其中Item 看起来像这样:

    public class Item {
        private String value;
        private String label;
        // Add/generate c'tors, getters and setters.
    }
    

    在服务器端获取选中项如下:

    String selectedItem = request.getParameter("item");
    

    您也可以使用Map&lt;String, String&gt; 代替List&lt;Item&gt;,其中Item 实际上是一个键值对。然后,您可以通过以下方式对其进行迭代:

    <select name="item">
        <c:forEach items="${map}" var="entry">
            <option value="${entry.key}">${entry.value}</option>
        </c:forEach>
    </select>
    

    相关答案:


    更新:根据 cmets,您应该永远不要将特定于服务器的库(例如 Tomcat/lib/*.*)复制到 webapp 的 /WEB-INF/lib 或(默认)运行时中的任何其他位置类路径(例如JRE/lib/ext)。这只会导致类路径中的冲突,从而导致此类错误,并且会使您的 webapp 无法运行和不可移植。您应该将特定于服务器的库保留在其默认位置。从任何特定于服务器的库中清除 /WEB-INF/lib

    您可能在那里复制了特定于服务器的库,因为您无法编译您的 servlet。复制/WEB-INF/lib 中的库是错误的解决方案。您基本上应该只在编译时类路径中指定这些库。目前尚不清楚您使用的是哪个 IDE,但如果是 Eclipse,这可以轻松完成:首先在 Servers 视图中添加服务器,然后将您的动态 webapp 项目与添加的服务器相关联。在全新的 Web 项目上,您可以在项目创建向导期间选择服务器。在现有的 Web 项目中,您可以在项目属性的 Targeted Runtimes 部分中对其进行修改。这样 Eclipse 会自动将特定于服务器的库添加到项目的构建路径中。

    【讨论】:

    • 嘿,感谢您的回复。在我的 bean 类中,我得到了 arraylist 并返回它。之后我做了你说的事情,这是我的 jsp 如果我运行这个org.apache.jasper.JasperException: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460) 和一些根本原因exceptios ..我在web-inf / lib中添加了一些额外的jar,xml的版本是2.4混淆..
    • 发布根本原因。他们讲述了问题的根本原因。
    • 这是一个...根本原因 javax.servlet.ServletException: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774) org.apache.jsp.Onto_0020web_jsp._jspService(Onto_0020web_jsp.java: 104) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper. java:331)
    • java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587) javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323) org.apache.jsp.Onto_0020web_jsp._jspx_meth_c_005fforEach_005f0( Onto_0020web_jsp.java:145) org.apache.jsp.Onto_0020web_jsp._jspService(Onto_0020web_jsp.java:89) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) javax.servlet.http.HttpServlet.service( HttpServlet.java:729)
    • 这是一个异常...异常 org.apache.jasper.JasperException: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet. java:321) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多