在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>

解决方案 »

  1.   

    第二个方法中的如下代码,无法取得值。
    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");   //另外这个方法也无法取得值     
      

  2.   

    Ajax,第一个和第二个分别发送请求执行,返回list分别处理;java方法,定义全局list,先判断list是否为空,空则自行再执行查询,非空返回全局list
      

  3.   

    这两个方法没看出有什么联系啊?独立执行的?
    如果是这样,要么像楼上说的用全局变量,要么把List保存到共同区域(如session之类的)
      

  4.   

    是我想简单了吗,直接再调一下方法一的dao接口不就行了