【问题标题】:Get List<Map<String, Object>> from jsp in Servlet [duplicate]从 Servlet 中的 jsp 获取 List<Map<String, Object>> [重复]
【发布时间】:2016-09-25 05:00:34
【问题描述】:

我有ProductServlet.java 从数据库List&lt;Map&lt;String, Object&gt;&gt; paramsList 获取 - 充满产品对象及其参数。然后我执行以下操作:request.setAttribute("paramList", paramsList); 并获取prodView.jsp 中的列表进行解析:

<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>
...

假设用户修改了 paramList。所以我想在EditProductServlet.java@WebServlet(urlPatterns = { "/editProduct" }))中得到这个修改过的list&lt;Map&lt;String, Object&gt;&gt;(它的元素)。但我不知道该怎么做。当我尝试这个时,我什么也没得到:

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

感谢您的帮助!

【问题讨论】:

    标签: java jsp servlets jstl


    【解决方案1】:

    您需要使用 getParameterValues() 来返回同名的参数数组。由于您正在创建多个具有相同名称的文本框,即 attr 和 vals。应该使用 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 sn-p:

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 2021-04-29
      相关资源
      最近更新 更多