当前位置: 首页 > 知识库问答 >
问题:

从Servlet中的jsp获取List[重复]

越扬
2023-03-14

我有ProductServlet.java从数据库中获取列表

<form method="POST" action="editProduct">
...
     <c:forEach var="map" items="${paramList}" >
        <tr>
            <td>Attributes</td>
            <td><input type="text" name="attr" value="<c:out value="${map['attrName']}"/>" /></td>
        </tr>
        <tr>
            <td>Values of attributes</td>
            <td><input type="text" name="vals" value="<c:out value="${map['value']}"/>" /></td>
        </tr>
    </c:forEach>
...

假设用户修改了参数列表。所以我想得到这个修改后的列表

String t = (String) request.getParameter("attr");

谢谢你的帮助!


共有1个答案

方宜
2023-03-14

您需要使用getParameterValues(),它返回具有相同名称的参数数组。因为您正在创建多个同名的文本框,即attr和VAL。应使用HttpSerletRequest的方法getParameterValues(),而不是getParameterValue()。

下面是完整的示例

Servlet代码

public class MapServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("do Get");
        Map<String, String> values = new HashMap<String, String>();
        values.put("1", "One");
        values.put("2", "Two");
        values.put("3", "Three");
        values.put("4", "Four");

        request.setAttribute("paramList", values);
        RequestDispatcher rd = request.getRequestDispatcher("youruipage.jsp");
        rd.forward(request, response);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("do Post");
        String keys[] = request.getParameterValues("attr");
        String values[] = request.getParameterValues("vals");

        for (String str1 : values) {
            System.out.println(" - " + str1);
        }

        for (String str2 : keys) {
            System.out.println(" - " + str2);
        }
    }

}

JSP代码段:

<form method="POST" action="editProduct">
<h2> test</h2>
    <table>
  <c:forEach var="map" items="${requestScope.paramList}" >
        <tr>
            <td>Attributes</td>
            <td><input type="text" name="attr" value="${map.key}" /></td>
        </tr>
        <tr>
            <td>Values of attributes</td>
            <td><input type="text" name="vals" value="${map.value}" /></td>
        </tr>
        </c:forEach>
 </table>
<input type="submit" value= "submit"/>
  </form>
 类似资料:
  • 我有2个问题 1)我有一个login.jsp页和索引页。一旦我验证了用户(在servlet ie中),用户将被重定向到index.jsp页面。我用servlet的这条线重定向它 这个过程运行良好。但是当我刷新页面时,我会被重定向回登录页面。另外,我注意到在index.jsp页面上,我得到的名字而不是index.jsp,即我的servlet名称得到displayed.for这样的例子得到代替显示 2

  • 问题内容: 最近,我一直在为在Glassfish v3上运行的Web应用程序实施安全性。我通过设置基本身份验证成功设法保护了一些资源,如下所示: 现在,我想知道如何在登录提示中引入用户名,以影响用户的实际数据。我以为可以有一个会话属性来获取那段数据,但是我不知道它是哪一个。 会话属性我错了吗?还有其他方法可以访问该登录信息吗? 提前致谢。 问题答案: 可通过以下方式获得: 在JSP EL中等效:

  • 这里我想使用RequestDispatcher从servlet调用jsp页面,问题是在jsp代码中调用java代码没有问题,问题是html代码不起作用 下面是代码: 重定向servlet。爪哇: showReportt_arb。jsp: 在上面的逻辑中,java代码显示在服务器控制台中,但html代码没有显示。请帮我解决这个问题

  • 我在servlet里有一段代码 我有一个ajax代码 我有一个jsp代码 如何通过ajax将servlet中list的值分配给jsp中的allProduct

  • 问题内容: 我正在使用struts / tiles开发一个邮轮预订应用程序,该应用程序使用 多个 内部servlet / jsp转发来到达正确的jsp进行显示。但是,一旦你达到用来渲染页面的最后JSP中,在JSP调用返回的路径 该 JSP。 例如 原始请求: / booking / getCruiseDetails 被转发到:/booking/validateCruiseDeteails.jsp

  • 我有一份产品清单 我的产品类别是 我想要两个列表:第一个只返回多次出现的产品,第二个只返回一次出现的产品 我正在使用Java8中的流 但ProductMorethance不会返回重复的产品= 最好的方法是什么?