• strut2后台向前台传值问题


    1、用session 代码:

    ActionContext.getContext().getSession().put("questionList", list);

    问题,session不能放太大的东西,如果list过大,session就会很大,不太好

    2、ongl表达式:

    代码:

    public PeopleAction extends ActionSuper{
    private List<People> peopleList; //定义需要传递到页面的list对象 需要提供get set 方法
    get...
    set...
    public String getList(){
    peopleList = peopleServer.getList(); //将获取的数据赋值给list
    }
    然后再需要显示的页面使用jstl或者struts自己的标签循环显示
    <c:forEach item="${peopleList}" var="item">
    ....
    </c:forEach>
    }

    3、将值set到list中在结果页面用El表达式${requestScope.questionList}就可以得到

    4、

    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属性值

  • 相关阅读:
    .Net Frameworks versions
    noteJavascript::string2Date for new Date(str)
    noteMS questions
    note删除Visual Studio recent Projects list
    noteshow hidden files
    sql trick
    拯救MySql 签名
    数据结构——栈和队列
    the summary of loop structure in C
    the summury of array in C.
  • 原文地址:https://www.cnblogs.com/hyteddy/p/2042785.html
Copyright © 2020-2023  润新知