struts2 action 向jsp页面传递参数问题

请教一下高手,比如我在jsp页面里输入了username和password想得到一个从数据库里提取出来的LIST数据
java类代码大概是这样:
public class A extends ActionSupport
{
Private String username;
Private String password;

username与password相应的get set方法;

public String execute()
{
List list = new ArrayList()

//list = 这里调用了一个java类,到了一LIST类的
//
//请教这里面应该怎么写才能把在上面得到的list类传到jsp页面上去
//成功转到yes.jsp
}
}
还有就是怎么样在yes.jsp页面上得到上面Action A 中传下来的list类,只写主要的JSP代码就可以了,谢谢了

首先。你的action有问题。
list不应该是方法体里的变量,list需要有get set 方法。这样jsp页面会取不到值。改成下面这样(我就不写get set方法了。你自己加):

public class A extends ActionSupport
{
Private String username;
Private String password;
Private List list ;
username与password相应的get set方法;

public String execute()
{

list = 这里调用了一个java类,到了一LIST类的
//
//请教这里面应该怎么写才能把在上面得到的list类传到jsp页面上去
//成功转到yes.jsp
}
}

在JSP页面的<@page>标签下面加一个
<@ taglib prefix="s" uri="/struts-tags" >标签包(关于这个标签包的配置和使用建议到网上搜索看看),然后
yes.jsp写法。

<s:iterator value="list" id="item">
<s:property value='item'/>
</s:iterator>
这里面item对应着list里的每个元素。
如果item 是对象(如是People对象且People有一个name属性)则可以写成下这样。
<s:iterator value="list" id="item">
<s:property value='#item.name'/>
</s:iterator>
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-28
以前用的是struts1.2 我一般是这样
List<A> list = new ArrayList<A>()
request.setAttribute("list", list);
在JSP中.
<% List<A> lsit = (List<A>)request.getAttribute("list") %>
--------------------------------------------
Struts2
1.action标签允许开发者在JSP页面中直接调用action,该标签有以下属性:

(1)executeResult:可选属性,为一个Boolean类型值,用来指定是否显示action的执行结果,默认值为false,即不显示。

(2)id:可选属性,用来引用该action的标识。

(3)name:必填属性,用来指定该action的实现类位置。

(4)namespace:可选属性,用来指定该标签调用的action所在的命名空间。

(5)ignoreContextParams:可选属性,用来指定该页面中的请求参数是否需要传入调用的action,默认值为false,即将本页面的请求参数传入被调用的action。

2.Struts2页面中需要显示动态数据时,需要将这些数据在页面文件外面获取,然后通过某种方式传到页面中,因为要避免在JSP页面中编写Java代码。比如需要从数据库中读取一系列数据,我们一般要通过action来获取这些数据,然后让页面得到action中获取的数据。

3.下面举一个简单的例子:

显示数据库中所有的书本信息

(1)书本的实体类为Book.java,反向表生成Hibernate实体类等过程这里不说。下面是Book.java的示例内容:

package entity;

public class Book implements java.io.Serializable {

private Integer bookId;
private String bookName;
private String bookAuthor;

public Integer getBookId() {
return this.bookId;
}

public void setBookId(Integer bookId) {
this.bookId = bookId;
}

public String getBookName() {
return this.bookName;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}

public String getBookAuthor() {
return this.bookAuthor;
}

public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}

}

(2)查询所有书本的方法,该方法所在的类为BookManage.java,其示例内容如下:

package dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.*;
import entity.*;

public class BookManage extends HibernateDaoSupport {

@SuppressWarnings("unchecked")
public List<Book> allBook(){
String hql = "from Book as book ";
try{
List<Book> allBook = this.getHibernateTemplate().find(hql);
return allBook;
}catch (RuntimeException re) {
throw re;
}
}
}

(3)创建一个action用来获取所有书本信息,action为AllBookAction.java,其示例内容如下:

package com.xiaoqi.action;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

import java.util.*;
import dao.BookManage;
import entity.Book;

@SuppressWarnings("serial")
public class LeftAction extends ActionSupport{

private BookManage bookManage;

public void setBookManage(BookManage bookManage) {
this.bookManage = bookManage;
}

public String execute(){

List<Book> allBook = bookManage.allBook();
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("allBook", allBook);

return null;
}
}

在上述代码中,将获取的所有书本信息保存到了名为"allBook"的request对象中,并返回null,因为返回值在现在这种情况下没有用。

(4)在struts.xml中,配置该action,内容如下:

<action name="allBookAction" class="AllBookAction">
</action>

(5)applicationContext.xml中配置该action,内容如下:

<bean id="bookManage" class="dao.BookManage" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory" >
<ref local="sessionFactory"/>
</property>
</bean>

<bean id="AllBookAction" class="com.xiaoqi.action.AllBookAction" >
<property name="bookManage">
<ref bean="bookManage" />
</property>
</bean>

(6)最后看下显示页面book.jsp,其内容如下:

<%@ page language="java" pageEncoding="gb2312"%>
<%@taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
......
</head>

<body>
<center>
<s:action name="allBookAction" executeResult="false"></s:action>
<div>
<ul>
<li>所有书本</li>
<s:iterator value="#request.allBook">
<li>
书ID:<s:property value="bookId" />
</li>
<li>
书名:<s:property value="bookName"/>
</li>
<li>
作者:<s:property value="bookAuthor"/>
</li>
</s:iterator>
</ul>
</div>
</center>
</body>

上述代码中,先用<s:action name="allBookAction" executeResult="false"></s:action>访问AllBookAction,记得executeResult值为false。然后在<s:iterator value="#request.allBook">中指明要循环哪个request对象所保存的List,这里要循环名为allBook的request对象所保存的List。通过<s:property value="bookName"/>直接输出该request对象中所保存的List中的书本对象Book的bookName属性值。
第2个回答  2010-01-27
首先你要配置struts.xml 文件 直接放在src下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default-package" extends="struts-default"
namespace="/default">

<action name="yes" class="包名.你的Action名">
<result name="success" type="dispatcher">
yes.jsp
</result>
</action>

</package>
</struts>

按照以上配置的访问路径是
http://localhost:port/你的应用名/default/yes.action
访问这这个路径就能的到与之在struts.xml配置好的Action的所有属性,别直接访问jsp

Action 里写
private List list = new ArrayList()
以及list 的get set方法

jsp里大致这样

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<html>
<head>
</head>
<body>

<!-- 用struts2标签 -->
<!-- 如果list里是String -->
<s:iterator value="list">
<s:property />
</s:iterator>
<!-- 如果list里是User User有两个属性name 和password -->
<s:iterator value="list">
<s:property value="name" />
<s:property value="password" />
</s:iterator>

</body>
</html>

我也在学习中 不过感觉struts2有点麻烦
第3个回答  2010-01-28
一楼的我感觉有些问题补充下list应该写成类属性没错,但是必须有相应的get set方法
public class A extends ActionSupport
{
Private String username;
Private String password;
Private List list ;
username与password还有list相应的get set方法;

public String execute()
{

list = 这里调用了一个java类,到了一LIST类的
//setList(list);
}
}
这样你就可以在跳转的jsp页面获取了用标签和request那就看你的喜欢了。
第4个回答  2010-01-28
list 放request 然后再页面上输除这个list就可以了

怎么把action中的值传到jsp页面
对于action的类属性,直接为其赋值(例如 message="Test";),然后在jsp页面中使用el表达式取出这个值(${message },直接以类属性名称取值即可,el默认的取值域就是request,struts2会将action的所有带有get,set的属性自动的放入request域中【当然你也可以使用struts的标签库,不推荐】)对于action中方法中...

struts2 中redirectAction如何传递参数!
struts2 action提交成功后一般会转到某一jsp。但有时候需要跳到某一action,一般会用如下方法:<result name="success" type="chain"actionName<\/result或者<result name="success" type="redirect"actionName.action<\/result如果这个action后面要带参数,比如xxxAction?id=xxxx也可以搞定,用下面的方法:<...

各位java前辈:1.在struts2中,在jsp页面是如何获取Action中值的?需要...
struts是采用ognl模型,就是对象关系模型,想要得到action中的值,首先的一点这个值要有set和get方法,在你请求action的时候,会重新生成一个action对象--》调用set方法给这个属性赋值,在jsp上展示用的是get方法,例如你有一个属性name需要展示,set、get方法写好后,在你请求的action中给name赋值,页面就...

怎么把Struts2中的Action运行结果打印到jsp上 求高手指点:
直接用actioncontext。getcontext()。getsession()。put(“a”,“打印的值”);让后在页面${a}, 其实还可以在这个类里面创建打印值 并实现他的get,set方法!在也面直$(打印值)就ok了;

关于struts2的 迭代出的值,然后怎样传到另一个jsp页面里啊?……_百...
可以url后面加上?id=xxx通过get的方法将ID传到ACtion中,然后通过数据库查找你想要得内容。也可以将页面的内容存储到session中在chang.jsp中用el表达式就可以得到,如果你不回用el表达式的话,也可以用<%session.get("")%>得到,session是JSP中的内置对象,不需要初始化 直接用就行。有问题追问。

Struts2的:action中有个name,已经赋值了,我要在jsp用onclick="xxx.acti...
这跟你自己定义的action中的name不冲突,jsp中传递过来值你自己重新定义一个变量然后赋值给此变量就可以了。关键在于你自己能区分哪个是哪个。。定义变量名的时候区分开来就行了。

得到file的文件名和存储路径后,在Struts2中的action中要怎样获取file的...
首先我们要清楚一点,这里的file并不是真正指代jsp上传过来的文件,当文件上传过来时,struts2首先会寻找struts.multipart.saveDir(这个是在default.properties里面有)这个name所指定的存放位置,我们可以新建一个struts.properties属性文件来指定这个临时文件存放位置,如果没有指定,那么文件会存放在tomcat的apache-tomcat-7.0.29...

关于STRUTS2的传值问题?
action里怎么能写 private String str; ...这个说法不正确的,我们不仅要这么些,而且还鼓励这么写,我们要去掉他娘的from对象。struts 2.0之前的版本最大败笔就是form对象和struts标签,form对象严重影响了我们优良的程序设计,通过DTO设计模式,我们原本可以直接将对象传递到jsp,因为有了一个form,我们...

struts2中如何在jsp页面中用js取得action中传过来的值?是用js得到...
js里可以直接写 var num="";actionNum就是action传过来的变量名

struts2中,jsp页面通过ajax访问了action,action如何返回一个json数据给...
public class pageAction extends ActionSupport{ private String username;private String password;private String cmd;public String execute(){ String result = "";String message = "";\/\/创建流 PrintWriter out = null;\/\/创建json对象 JSONObject json = new JSONObject();cmd = ServletAction...

相似回答