package demo;
/**
* Copyright 2004, James M. Turner.
* All Rights Reserved
*
* A Struts action that sends the new comments to the console
*/
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.validator.DynaValidatorForm;
public class PRocessFormAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
DynaValidatorForm df = (DynaValidatorForm) form;
Person[] p = (Person[]) df.get("people");
for (int i = 0; i < p.length; i++) {
System.out.println(p[i].getFirstName() + " " + p[i].
getLastName() + ":" + p[i].getComment());
}
return mapping.findForward("sUCcess");
}
}
在实际的应用中,这就是数据写回到数据库的地方。在这种情况下,他只将数据倒在控制台上所以我们可以看到他是正确收到的。假设我们为每个演员都填充了恰当的值,我们在控制台上会看到下列内容:
Harrison Ford:Indiana Jones
Carrie Fisher:Postcards from the Edge
Mark Hamill:Wing Commander
正如我在文章开头提到的一样,还有另一个方法可以解决这个问题,而且它不需要使用会话期范围内的表格。这个方法就是使用HashMaps 来存储行。我们来看看使用HashMaps编写的同一段代码:
首先,我们添加一个新表格到struts-config.xml:
现在,我们不使用beans的排列,改为使用HashMap 来存储每个人的数据。另外,我们需要一个新的HashMap 来存储注释,原因我稍后再解释。我们也需要一个新的动作来填充数据:
package demo;
/**
* Copyright 2004, James M. Turner.
* All Rights Reserved
*
* A Struts action that sets up a DynaForm which is globally scoped
*/
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.validator.DynaValidatorForm;
public class SetupHashFormAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response)
新闻热点
疑难解答