cAng^Er

          不懂我的人 , 離不了我 , 該了解了解我 !而懂我的人 , 更離不了我 , 因為他們愛我 。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            30 隨筆 :: 16 文章 :: 18 評論 :: 0 Trackbacks
          原:http://blog.csdn.net/chikai/archive/2004/12/06/206371.aspx
          webwork對頁面諸如像checkbox這種表單元素的處理,我們如果只是簡單的用來設置字段的布爾值,就像下面的處理方式,如:
          <input type="checkbox" name="user.lockedOut" value="true"/>如果用戶選中這復選框,瀏覽器在查詢串中將會送出"user.lockedOut=true",此時OGNL執行了action.getUser().setLockedOut(true)。如果用戶不選中復選框,瀏覽器將不會送出查詢串,因此,在開始,應確保已經初始化lockedOut 為false:
          private boolean m_lockedOut = false;
          public void setLockedOut(boolean lockedOut) { m_lockedOut = lockedOut; }

          ??????? 但更多情況下,我們是把它當做復選(多項選擇)來用,這有兩種情況用checkbox來設置集合:
          一.checkbox name相同
          在一個String 類型的Set 集合里面存放許多權限,用checkbox的HTML如下:
          <input type="checkbox" name="user.priv" value="boss"/>
          <input type="checkbox" name="user.priv" value="admin"/>
          <input type="checkbox" name="user.priv" value="manager"/>
          比方說,一個用戶選中前面的兩項,瀏覽器將會送出這查詢串: user.priv=boss&user.priv=admin。
          OGNL將會處理查詢串:action.getUser().setPriv(String[] {"boss", "admin"})。
          Action里面的方法將會是這樣:
          Set m_privileges = new HashSet();

          ??? public void setPriv(String[] privs) {
          ??????? for (int i = 0; i < privs.length; i++) {
          ??????????? m_privileges.add(privs[i]);
          ??????? }
          ??? }
          二.checkbox name不同
          有三種處理方式:
          I.
          ?<input type="checkbox" name="xlist[0].id" value="444">
          ?<input type="checkbox" name="xlist[1].id" value="443">
          ?<input type="checkbox" name="xlist[2].id" value="442">
          ?* Action中用List集合來處理:private List xlist = new XWorkList(User.class)
          ??? public List getXlist(){????????????
          ??????? return xlist;
          ??? }
          II.?
          ?<input type="checkbox" name="xmap['0'].id" value="444">
          ?<input type="checkbox" name="xmap['1'].id" value="443">
          ?<input type="checkbox" name="xmap['2'].id" value="442">
          ? * Action中用Map集合來處理:private Map xmap = new XWorkMap(User.class)
          ??? public List getXmap(){????????????
          ??????? return xmap;
          ??? }
          ?III.
          ?<input type="checkbox" name="xarray[0]." value="444">
          ?<input type="checkbox" name="xarray[1]" value="443">
          ?<input type="checkbox" name="xarray[2]" value="442">
          ? *Action中用Object[]數組來處理(注意數組的長度必須事先確定,不可以動態改動數組的大小):
          ???? private Object[] xarray = new Object[3]
          ???? public Object[] getXarray(){
          ??????????????? return xarray;
          ??????? }

          ??????? 下面用一個稍為復雜一點的例子來加深對List集合處理方式的理解,其它處理方式都是異曲同工。
          multiSelect.jsp文件
          <%@page pageEncoding="gb2312" contentType="text/html;charset=gb2312"%>
          <%@taglib prefix="ww" uri="webwork" %>
          <html>
          ?? <body>
          ?? <form name="multi" method="post" action="multiSelect.action">
          ????? <%int i = 0; %>
          ????? <ww:iterator value="ulist">
          ????? <%
          ??????? String cName = "xlist["+i+"].id";
          ??????? i++;
          ?????? %>
          ?????? <input type="checkbox" name="<%=cName%>" value="<ww:property value="id"/>">
          ?????? <ww:property value="username"/>
          ?????? <br>
          ????? </ww:iterator>
          ????? <input type="hidden" name="actionEvent" value="viewSelect">
          ????? <input type="submit" value="選擇">
          ?? </form>
          ?? </body>
          </html>

          multiSelect_result.jsp文件
          <%@page pageEncoding="gb2312" contentType="text/html;charset=gb2312"%>
          <%@taglib prefix="ww" uri="webwork" %>
          <html>
          ?? <body>你的選擇是:<br>
          ?????? <ww:iterator value="xlist">
          ?????? <ww:property value="id"/>
          ?????? <br>
          ????? </ww:iterator>
          ?? </body>
          </html>

          MultiSelectAction.java文件

          package com.wzj.rbac.webwork.action;
          import java.util.List;
          import com.opensymphony.xwork.Action;
          import com.opensymphony.xwork.util.XWorkList;
          import com.wzj.framework.spring.resource.BeanLocator;
          import com.wzj.rbac.ServiceFacade.UserService;
          import com.wzj.rbac.domain.object.User;
          /**
          ?* @desc 復選框 選擇提交Action類
          ?* @author chikai<br>
          ?* @link <a href="mailto:wzj616@etang.com">chikai</a>
          ?* @version $ MultiSelectAction.java? 2004-12-5 19:11:54 $
          ?* @version $ Project xwork
          ?*/
          public class MultiSelectAction implements Action {

          ??? private final static String PRE_SUCCESS = "pre_success";
          ??? //用戶列表
          ??? private List ulist;
          ??? //選擇的用戶
          ??? private List xlist = new XWorkList(User.class);
          ??? private UserService uService;
          ??? //頁面執行動作判斷
          ??? private String actionEvent;
          ???
          ??? public String execute() throws Exception {
          ?????? if(actionEvent!=null&&actionEvent.equals("viewSelect"))
          ?????? {??
          ?????????? for(int s=0;s<xlist.size();s++){
          ?????????????? if(((User)xlist.get(s)).getId()==null){
          ?????????????????? xlist.remove(s);
          ?????????????????? s--;
          ?????????????????? }
          ?????????? }?
          ?????????? return SUCCESS;
          ?????? }
          ?????? //獲取用戶業務服務
          ?????? uService = BeanLocator.getGlobalServiceLocator().getUserService();
          ?????? ulist = uService.getAllUser();
          ?????? return PRE_SUCCESS;
          ??? }
          ??? public List getUlist(){
          ??????? return ulist;
          ??? }
          ??? public List getXlist(){????????????
          ??????? return xlist;
          ??? }
          ??? public void setActionEvent(String ae){
          ??????? actionEvent = ae;
          ??? }
          }


          xwork.xml文件:

          <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "

          <xwork>
          ?
          ?<include file="webwork-default.xml" />
          ??? <include file="config-browser.xml" />
          ??? <package name="pklogin" extends="webwork-default">
          ?
          ??? <interceptors>
          ??????? <interceptor-stack name="modelParamsStack">
          ???? <interceptor-ref name="model-driven" />
          ??????? <interceptor-ref name="params" />
          ??????? </interceptor-stack>?
          ?</interceptors>?
          ?
          ?<action name="multiSelect" class="com.wzj.rbac.webwork.action.MultiSelectAction">
          ??<result name="success" type="dispatcher">
          ??????????? <param name="location">/multiSelect_result.jsp</param>
          ??????? </result>
          ??<result name="pre_success" type="dispatcher">
          ???<param name="location">/multiSelect.jsp</param>
          ??</result>
          ??<interceptor-ref name="modelParamsStack" />
          ?</action>
          ??
          ?</package>

          </xwork>

          主站蜘蛛池模板: 康保县| 延长县| 巴南区| 陇川县| 华容县| 于都县| 清新县| 广汉市| 武宣县| 湖北省| 永胜县| 略阳县| 大方县| 安丘市| 乌拉特前旗| 景泰县| 庄浪县| 肥西县| 辛集市| 揭西县| 锡林郭勒盟| 珠海市| 香河县| 巫山县| 曲沃县| 原阳县| 弥渡县| 张家口市| 名山县| 吴忠市| 辛集市| 绥中县| 漯河市| 新邵县| 鹤壁市| 密山市| 故城县| 蓝田县| 万山特区| 尉氏县| 安泽县|