使用前一个参数重新加载表单

时间:2010-05-24 07:48:07

标签: html jsp forms servlets

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

2 个答案:

答案 0 :(得分:0)

相应地预填充HTML输入元素的value属性。在servlet中,将带有数据的bean放在请求范围内,将请求转发给JSP,然后在JSP中执行,例如:

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

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

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

答案 1 :(得分:0)

例如,您必须在表单中填写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%>'" />

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

我的回答有点潦草。但试着实现这一点。