http://blog.csdn.net/anhuixiaozi/article/details/5903680
1)环境: jdk1.5,tomcat5.5
2)导入sturts2jar包: commons- fileupload-1.2.1.jar、commons-io-1.3.2.jar、commons-logging-1.0.4.jar、 freemarker-2.3.15.jar、ognl-2.7.3.jar、struts2-core-2.1.8.jar、xwork-core- 2.1.6.jar。
3)web.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4)struts.xml文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.ui.theme" value="simple" />
<package name="anhuixiao" namespace="/anhuixiao" extends="struts-default">
<action name="list" class="cn.anhuixiao.action.PersonListAction">
<result name="list">/WEB-INF/page/personlist.jsp</result>
</action>
<action name="show_*" class="cn.anhuixiao.action.PersonListAction" method="{1}">
<result name="show">/WEB-INF/page/personlistShow.jsp</result>
</action>
</package>
</struts>
5)PersonListAction- conversion.properties内容
Element_bookList=cn.anhuixiao.bean.Book此文件放 PersonListAction.java同一目录下
6)PersonListAction.java 内容
package cn.anhuixiao.action;
import java.util.ArrayList;
import java.util.List;
import cn.anhuixiao.bean.Book;
public class PersonListAction {
private List<Book> bookList;
public String execute() {
bookList = new ArrayList<Book>();
bookList.add(new Book(56, "javaweb", 90));
bookList.add(new Book(80, "ejb", 78));
bookList.add(new Book(23, "spring", 50));
return "list";
}
public String show() {
for (Book book : bookList) {
System.out.println(book.getName());
}
return "show";
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
}
7)Book.java内容:
package cn.anhuixiao.bean;
public class Book {
private Integer bookid;
private String name;
private Integer price;
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Book(Integer bookid, String name, Integer price) {
this.bookid = bookid;
this.name = name;
this.price = price;
}
public Book(String name) {
this.name = name;
}
public Book(){
}
}
8)personlist.jsp 内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'personlist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<s:form action="show_show" namespace="/anhuixiao">
<s:iterator value="bookList" status="status" >
<s:textfield label="Name" name="bookList[%{#status.index}].name" value="%{bookList[#status.index].name}"/><br/>
</s:iterator>
<s:submit value="submit" />
</s:form>
</body>
</html>
9)personlistShow.jsp 内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'personlist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
改变后的结果<br/>
<s:iterator value="bookList" status="status" >
<s:property value="name"/><br/>
</s:iterator>
</body>
</html>
2)导入sturts2jar包: commons- fileupload-1.2.1.jar、commons-io-1.3.2.jar、commons-logging-1.0.4.jar、 freemarker-2.3.15.jar、ognl-2.7.3.jar、struts2-core-2.1.8.jar、xwork-core- 2.1.6.jar。
3)web.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4)struts.xml文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.ui.theme" value="simple" />
<package name="anhuixiao" namespace="/anhuixiao" extends="struts-default">
<action name="list" class="cn.anhuixiao.action.PersonListAction">
<result name="list">/WEB-INF/page/personlist.jsp</result>
</action>
<action name="show_*" class="cn.anhuixiao.action.PersonListAction" method="{1}">
<result name="show">/WEB-INF/page/personlistShow.jsp</result>
</action>
</package>
</struts>
5)PersonListAction- conversion.properties内容
Element_bookList=cn.anhuixiao.bean.Book此文件放 PersonListAction.java同一目录下
6)PersonListAction.java 内容
package cn.anhuixiao.action;
import java.util.ArrayList;
import java.util.List;
import cn.anhuixiao.bean.Book;
public class PersonListAction {
private List<Book> bookList;
public String execute() {
bookList = new ArrayList<Book>();
bookList.add(new Book(56, "javaweb", 90));
bookList.add(new Book(80, "ejb", 78));
bookList.add(new Book(23, "spring", 50));
return "list";
}
public String show() {
for (Book book : bookList) {
System.out.println(book.getName());
}
return "show";
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
}
7)Book.java内容:
package cn.anhuixiao.bean;
public class Book {
private Integer bookid;
private String name;
private Integer price;
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Book(Integer bookid, String name, Integer price) {
this.bookid = bookid;
this.name = name;
this.price = price;
}
public Book(String name) {
this.name = name;
}
public Book(){
}
}
8)personlist.jsp 内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'personlist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<s:form action="show_show" namespace="/anhuixiao">
<s:iterator value="bookList" status="status" >
<s:textfield label="Name" name="bookList[%{#status.index}].name" value="%{bookList[#status.index].name}"/><br/>
</s:iterator>
<s:submit value="submit" />
</s:form>
</body>
</html>
9)personlistShow.jsp 内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'personlist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
改变后的结果<br/>
<s:iterator value="bookList" status="status" >
<s:property value="name"/><br/>
</s:iterator>
</body>
</html>
遇到的问题
1)bean里面一定要有构造函数
2)正确配发 :<s:form action="show_show" namespace="/anhuixiao">和 <s:form action="show_show.action" namespace="/anhuixiao">
这样 <s:form action="/anhuixiao/show_show.action">不错,但有下面警告
2010-9-24 18:27:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: '/anhuixiao/show_show.action' in namespace: '/anhuixiao'. Form action defaulting to 'action' attribute's literal value.
2010-9-24 18:27:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: '/anhuixiao/show_show.action' in namespace: '/anhuixiao'. Form action defaulting to 'action' attribute's literal value.
警告: No configuration found for the specified action: '/anhuixiao/show_show.action' in namespace: '/anhuixiao'. Form action defaulting to 'action' attribute's literal value.
2010-9-24 18:27:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: '/anhuixiao/show_show.action' in namespace: '/anhuixiao'. Form action defaulting to 'action' attribute's literal value.
3) 正确配PersonListAction- conversion.properties文件
4) 正确写标签: <s:iterator value="bookList" status="status" >
<s:textfield label="Name" name="bookList[%{#status.index}].name" value="%{bookList[#status.index].name}"/><br/>
</s:iterator>
<s:textfield label="Name" name="bookList[%{#status.index}].name" value="%{bookList[#status.index].name}"/><br/>
</s:iterator>
相关推荐
在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...
struts2 向action提交list.html
jsp通过Ajax无刷新获取Action返回的模拟数据,然后通过struts2转化成json数据返回页面....这里面Map,List,对象等等,一些常用的操作都有。主要的代码在Action和 json.js里面。适合新手入门
4. **处理请求**:当用户提交表单后,Struts2会自动将所有列出的DataModel对象绑定到Action类的dataList属性。在execute方法中,我们可以遍历这个list,并调用DAO或Service层方法将数据保存到数据库。 ```java for ...
Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...
- `<s:textfield>`标签可以直接将页面上的输入值设置到Action中的实体对象上,前提是Action中存在对应的对象及属性,并且具备`setter`和`getter`方法。 ##### 2. 显示Action中的属性值 **标签**: `<s:property />...
本文将深入探讨如何使用jQuery的AJAX方法发送JSON对象数组到Struts2的Action,并在后端进行处理。 首先,我们了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
总结来说,通过这种方式,我们可以利用AJAX向Struts2 Action传递JSON数组,实现异步数据交互。这在动态更新页面内容、处理表单提交等场景下非常有用。同时,使用JSON作为数据交换格式,使得前后端的数据交换变得更加...
3. **对象传值**: 使用`<s:textfield>`向action中对象传值,注意action中对象的结构一致性。 4. **条件判断**: `<s:if>`应基于action中的数据进行逻辑判断,保持代码的清晰和可维护性。 5. **列表遍历**: `...
### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...
在这个场景下,我们关注的是如何在Struts2中迭代Map和List对象。这两种数据结构在Web开发中经常被用到,特别是在展示表单数据或动态渲染页面元素时。 首先,让我们深入了解`struts2-taglib`,这是一个包含Struts2...
struts2传递map list set到action
这样,当Action执行完成后,Struts2会自动将Action中的属性序列化为JSON格式并返回给客户端。配置如下: ```xml <!-- 配置Struts2支持JSON --> <constant name="struts.enable.SMD" value="true"/> ...
标题提到的"struts2 json传输对象文档"是指Struts2支持JSON格式的数据传输,使得Action类可以直接返回JSON对象,以便在客户端进行处理。这种功能极大地提高了Web应用的响应速度和用户体验,因为可以避免不必要的页面...
在Struts2框架中,Action类是业务逻辑处理的核心组件,它负责接收用户请求并进行相应的处理。Action类中的方法通常对应着用户界面的各个操作,而这些方法的参数则是用来接收前端请求传递的数据。本篇文章将深入探讨...
在Struts2中,`<input>`标签被广泛用于从前端页面向后端Action传递参数。例如: ```html ``` 这里,`name`属性定义了参数名,这要求在Action中需定义相应的属性并提供SET/GET方法。如果Action中没有定义该属性,...
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库中查询出来并进行了封装的那些对象,然后通过Struts2的标签遍历List里的每个对象,并把这些对象里所包含的属性取出来展现在页面上。...
在Struts2中,JSON插件允许我们在Action中返回JSON格式的数据,以便于JavaScript进行异步处理。要使用JSON插件,你需要下载并添加相应的JAR文件到项目的类路径中,例如`jsonplugin-0.33.jar`和其他Struts2的核心库。...
返回结果通常是一个List或单个对象,通过Struts2的Result类型映射到页面显示。 更新操作(Update):更新操作涉及找到要修改的对象,更新其属性,然后保存。Action方法将接收用户提交的更新信息,更新对象并调用DAO...