1. 程式人生 > >struts2前後臺傳值---利用值棧

struts2前後臺傳值---利用值棧

在action中將查出的資料放入到值棧中

//準備資料
        List<Department> departmentList=departmentService.findAll();
        //放到值棧中
        ActionContext.getContext().put("departmentList", departmentList);
        //在頁面獲取值棧中的資料的時候用#獲取  


在前臺以下拉框為例,賦給下拉框值棧中的值
<tr><td width="100">上級部門</td>
                        <td>         
                    <!--    獲取action中放入值棧中的資料,並進行下拉列表的顯示 -->
                          <s:select name="parentId" cssClass="SelectStyle"
                                list="#departmentList" listKey="id" listValue="name"
                                headerKey="" headerValue="==請選擇部門=="
                            /> 
                        </td>
                    </tr>  


從頁面傳值到ACTION如下: 1、先在struts.xml裡面設定頁面跳轉的方法名和路徑的<action>,如下:
<!-- 部門管理 配置struts,便於頁面呼叫action方法,比如:role_delete-->
        <action name="department_*" class="departmentAction" method="{1}">
            <result name="list">/WEB-INF/jsp/departmentAction/list.jsp</result>           
            <result name="saveUI">/WEB-INF/jsp/departmentAction/saveUI.jsp</result>
            <result name="toList" type="redirectAction">department_list</result><!-- 重定向到role_list這個action中 -->
        </action>  

2、然後再Jsp頁面裡面利用xml中的actionname來傳遞需要的引數: 例如:
<td><s:a action="department_list?parentId=%{id}">${name } </s:a> </td>  


這樣,就轉換到了DepartmentAction類裡面的list方法裡面了。 DepartmentAction類裡面定義parentId的get和set方法:就可以接受從頁面傳過來的parentId的值了 如下:
private Long parentId;  

public Long getParentId() {
        return parentId;
    }
  public void setParentId(Long parentId) {
        this.parentId = parentId;
    }  

public String list() throws Exception {
        List<Department> departmentList=null;
        if(parentId==null){//頂級部門列表
             departmentList=departmentService.findTopList();
        }else{//子部門列表
             departmentList=departmentService.findChildren(parentId);
        }        
        ActionContext.getContext().put("departmentList", departmentList);
        
        return "list";
    }