【问题标题】:reload a form with the same parameter of the previous使用与前一个相同的参数重新加载表单
【发布时间】:2010-05-24 07:48:06
【问题描述】:

我真的有一个问题,我不知道如何处理它。 我在 Eclipse IDE 中使用 JSP 和 Servlet。 首先,用户用他在表单中选择并写入的值填充一个 html 表。 之后他会发现他的参数显示在 html 表中。 现在的问题是: 点击表格时,表格的每一行都包含一个编辑按钮;用户应该让表单自动填充行的“先前选择”的值。 所以这是如何使用 html 表中的变量重新加载表单。 注意:我用 servlet 构建表。 请帮忙。

【问题讨论】:

    标签: html jsp forms servlets


    【解决方案1】:

    只需相应地预填充 HTML 输入元素的 value 属性即可。在 servlet 中,您将带有数据的 bean 放在请求范围内,将请求转发给 JSP,然后在 JSP 中执行以下操作:

    <input type="text" name="foo" value="${bean.foo}">
    

    请注意,当这是用户控制的数据时,您可能会冒XSSattacks 的风险。然后,您应该使用 JSTL 的 fn:escapeXml 转义输入:

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    ...
    <input type="text" name="foo" value="${fn:escapeXml(bean.foo)}">
    

    【讨论】:

      【解决方案2】:

      例如,您必须在表单中填写 FirstName 和 LastName 字段,并且您正在填写表格。

      当您在 servlet 中提交表单时,您构造了一个对象 POJO 类,您可以在其中存储名字和姓氏。

      你的 POJO 类可能是这样的。

      public class MyClass{
           private java.lang.String firstName = null;
           private java.lang.String lastName = null;
           public MyClass(java.lang.String firstName, java.lang.String lastName){
                this.firstName = firstName;
                this.lastName = lastName;
           }
           public void getFirstName(){
                return firstName;
           }
           public void getLastName(){
                return lastName;
           }
      }
      

      现在,在您的 servlet 中,您像这样创建此 POJO 类的对象并将其放入哈希表中。之后将哈希表放入会话中。

       MyClass myClassObject = new MyClass(request.getParameter("firstName"), request.getParameter("lastName"));
       java.util.Hashtable htMyClassObjects = (java.util.Hashtable)request.getSession(false).getAttribute("htMyClassObjects");
       if (htMyClassObjects == null){ // For the first time, it will be null
            htMyClassObjects = new java.util.Hashtable();
       }
       htMyClassObjects.put(java.lang.String.valueOf(htMyClassObjects.size()), myClassObject);
      

      在您的表中,单击按钮,传递与该行关联的哈希表键。像这样。

      <input type = "button" onclick="location.href='myjsp.jsp?rowNumber=<%=hash table key%>'" />
      

      现在,当您处理该按钮请求时,使用此数字并从哈希表中获取对象并填写字段。

      我的回答有点描述性。但是尝试实现这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        相关资源
        最近更新 更多