action有两个方法,两个方法如何传值?

xmhcyzs 2019-01-27 06:40:16
在Struts2框架,一个action有两个方法,第一个方法 selectAllLend查询数据库后生成list对象,传值给jsp显示,现第二个方法 lendBook(与第一个方法同在java文件)也需要生成的list对象,请问jsp如何传值给第二个方法?或第二个方法如何直接获取第一方法的list对象?请给代码,谢谢。
1.action主要内容:
package org.action;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;
import org.dao.LendDao;
import org.tool.CommonExcel;
import org.tool.Pager;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LendAction extends ActionSupport{

private String message;

private String dw_gz;
private int year_gz;
private int month_gz;
这里省略上面属性的get和set方法

LendDao lendDao=new LendDao();
Map request=(Map) ActionContext.getContext().get("request");
public String selectAllLend() throws Exception{


List list=lendDao.selectLend(dw_gz,year_gz,month_gz,this.getPageNow(),this.getPageSize());

request.put("list", list); //保存查询的记录
return SUCCESS;

}

public String lendBook()throws Exception{

HttpServletResponse response=null;
ActionContext context=ActionContext.getContext();
Map parameterMap=context.getParameters();

List dataList=(List)parameterMap.get("list");


//List dataList=(List)ActionContext.getContext().getValueStack().findValue("#list");


return SUCCESS;
}

}
2.jsp显示主要内容

<s:iterator value="#request.list" var="lend">

<tr>
<td><s:property value="#lend.dw" /></td>
<td><s:property value="#lend.year_gz" /></td>
<td><s:property value="#lend.month_gz" /></td>
<td><s:property value="#lend.name" /></td>
<td><s:property value="#lend.gz1" /></td>
<td><s:property value="#lend.gz2" /></td>

<%-- <td><s:date name="#lend.lTime" format="yyyy-MM-dd"/></td> --%>

</tr>
</s:iterator>

3.Struts.xml主要内容:
<action name="selectBook" class="org.action.LendAction" method="selectAllLend">
<result name="success">lend.jsp</result>
</action>


<action name="lendBook" class="org.action.LendAction" method="lendBook">
<result name="success">lend.jsp</result>
</action>
...全文
442 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-01-29
  • 打赏
  • 举报
回复
这两个方法没看出有什么联系啊?独立执行的?
如果是这样,要么像楼上说的用全局变量,要么把List保存到共同区域(如session之类的)
weixin_42754420 2019-01-29
  • 打赏
  • 举报
回复
是我想简单了吗,直接再调一下方法一的dao接口不就行了
mn11 2019-01-28
  • 打赏
  • 举报
回复
Ajax,第一个和第二个分别发送请求执行,返回list分别处理;java方法,定义全局list,先判断list是否为空,空则自行再执行查询,非空返回全局list
xmhcyzs 2019-01-27
  • 打赏
  • 举报
回复
第二个方法中的如下代码,无法取得值。 HttpServletResponse response=null; ActionContext context=ActionContext.getContext(); Map parameterMap=context.getParameters(); List dataList=(List)parameterMap.get("list"); //此方法无法取得值 //List dataList=(List)ActionContext.getContext().getValueStack().findValue("#list"); //另外这个方法也无法取得值

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧