【问题标题】:ArrayList populated by user imput to ComboBox (Select JPS)ArrayList 由用户输入填充到 ComboBox(选择 JPS)
【发布时间】:2016-09-02 21:28:12
【问题描述】:

这就是我想要做的,用户输入一个名称,该名称被添加到放置在 servlet 上的 ArrayList 中,然后名称应该显示在组合框中,下面是我所拥有的。它引发错误“stray c foreach start tag”

索引.JSP

<body>
    <form action="ServletGuardar.do" method="post">
        Name<input type="text" name="name">
        <input type="submit" name="save" value="Save">
    </form>
    <hr>
    <form action="ServletGuardar.do" method="post">
    Names<select name="database1">
        <c:forEach items="${lista}" var="databaseValue">
            <option value="${databaseValue}">
                ${databaseValue}
            </option>
        </c:forEach>
    </select>
    </form>
</body>

伺服器

ArrayList lista = new ArrayList();
String name = request.getParameter("name");
lista.add(name);

request.setAttribute("lista", "lista");

request.getRequestDispatcher("index.jsp").forward(request, response);
}

【问题讨论】:

  • 那么问题是什么?
  • 嗨,组合框(选择)不显示任何内容

标签: java jsp servlets arraylist


【解决方案1】:

我测试了您的代码并通过更改以下内容使其正常工作

  1. 如果您的 jsp 没有引用标记库,请添加它
  2. 在服务器端,您没有将 ArrayList 对象添加为请求 对象而不是您将其添加为字符串作为已经提到的其他答案。
  3. 当您提交第一个表格中的名称时,还要检查,打印出来并 如果您在服务器端获取名称值,请检查日志。

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index</title>
</head>
<body>
    <form action="./ServletGuardar.do" method="post">
        Name<input type="text" name="name">
        <input type="submit" name="save" value="Save">
    </form>
    <hr>
    <form action="/ServletGuardar.do" method="post">

    Names<select name="database1">
        <c:forEach items="${list}" var="databaseValue">
            <option value="${databaseValue}">
                ${databaseValue}
            </option>
        </c:forEach>
    </select>

    </form>
</body>
</html>

Servlet 的 doGet 方法

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub

        ArrayList<String> list = new ArrayList<String>();

        String name = request.getParameter("name");
        System.out.println("name=" + name);

        list.add(name);

        request.setAttribute("list", list);

        request.getRequestDispatcher("index.jsp").forward(request, response);

        // response.getWriter().append("name="+name+".Served at:
        // ").append(request.getContextPath());
    }

web.xml

  <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.ServletGuardar</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/ServletGuardar.do</url-pattern>
    </servlet-mapping>

【讨论】:

  • @Exit 如果您仍然面临挑战,请告诉我
  • 我按照您的步骤进行操作,现在可以使用,但在组合框中只显示一个输入
  • 组合框中出现的选项数量取决于您在 servlet 的数组列表中添加了多少对象,在 servlet 中添加更多对象然后尝试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
相关资源
最近更新 更多