亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用 Struts 實現動態控制表格大小(1)

2019-11-18 12:55:32
字體:
來源:轉載
供稿:網友

  在SUCceeding with Struts的前面安裝部分,我間接提到了DynaForms在運行期內可以動態的控制表格大小。換句話說,就是能夠根據需要得到5行、或者10行、或者15行長的表格??赡苡悬c不明智,我把這種策略的實際實現作為一種練習留給了讀者自己。在接下來的幾個月內,我收到了幾十個讀者的請求,他們請求給出具體的實現細節,所以這個月我將用兩種不同的方法來實現動態調整的表格。
  第一個方法就是我在前面的欄目中提到的那個方法,將尺寸參數留給DynaForm 的form-PRoperty 屬性來實現。為了演示具體過程,我們來看看一個非常簡單的應用:添加關于不同Star Wars 演員的注釋。在這個應用中我們感愛好的要害事實是:演員的數量在表格配置中動態設定,而不是在struts-config.xml文件中動態設定。
  首先,我們先來看看struts-config.xml 文件:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
                  "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";>
  <struts-config>
    <form-beans>
      <form-bean name="dynamicArrayForm" type="org.apache.struts.validator.DynaValidatorForm">
        <form-property name="people" type="demo.Person[]"/>
      </form-bean>
    </form-beans>
  
  
  <action-mappings>
    <action path="/setupForm" type="demo.SetupFormAction" name="dynamicArrayForm" scope="session"
  
     validate="false">
      <forward name="success" path="/displayForm.jsp"/>
    </action>
    
  <action path="/processActorComments"
  type="demo.ProcessFormAction"
      name="dynamicArrayForm" scope="session"
  validate="false">
      <forward name="success" path="/displayForm.jsp"/>
    </action>
  </action-mappings>
  </struts-config>
  
  如你所見,這是一個相當簡單的配置文件,只定義了一個表格和兩個動作。第一個動作,/setupForm,用來在初始顯示之前配置表格;另一個動作,/processActorComments 用來處理用戶輸入的注釋。
  在這個文件中有兩個重要的事情需要注重,它們對于事態的發展很要害:
  1. people 表格屬性定義為demo.Person[] 類型(即demo.Person的一個排列),但不給出任何size 參數。這就為要創建的排列產生了一個占位符,但是沒有任何例示的實排列。
  2. 這兩個動作將表格定義在會話期范圍內。這是很要害的,因為用戶在填寫數值之后提交表格時,數值在動作執行之前已經填充到表格內了。這就意味著沒有機會手動創建具有恰當空位數的排列,正如你在表格顯示之前在SetupFormAction 類中看到的情況一樣。換句話說,當表格提交時,必須已經有恰當的空位來接受表格值,唯一能保證這個的方法就是在會話期范圍內就已經有了這個表格。
  基本上在Person bean 中是沒有值的,他只是一個具有lastName、 firstName、 dateOfBirth、gender 和comment字段的普通bean。源文件包括在WAR 文件內。
  現在我們來看看SetupFormAction 類,它在表格第一次顯示之前調用。
  
  package demo;
  
  /**
   * Copyright 2004, James M. Turner.
   * All Rights Reserved
   *
   * A Struts action that sets up a DynaForm which is globally scoped
   */
  
  import java.io.IOException;
  import javax.servlet.ServletException;
  import javax.servlet.http.*;
  
  import org.apache.struts.action.*;
  import org.apache.struts.validator.DynaValidatorForm;
  
  public class SetupFormAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                   HttpServletResponse response)
        throws ServletException, IOException {
  
      DynaValidatorForm df = (DynaValidatorForm) form;
      Person[] p = new Person[3];
      p[0] = new Person();
      p[0].setDateOfBirth("07/13/1942");
      p[0].setLastName("Ford");
      p[0].setFirstName("Harrison");
      p[0].setGender("M");
      p[1] = new Person();
      p[1].setDateOfBirth("10/21/1956");
      p[1].setLastName("Fisher");
      p[1].setFirstName("Carrie");
      p[1].setGender("F");
      p[2] = new Person();
      p[2].setDateOfBirth("09/25/1951");
      p[2].setLastName("Hamill");
      p[2].setFirstName("Mark");
      p[2].setGender("M");
  
      df.set("people", p);
  
      return mapping.findForward("success");
    }
  }
  
  這一次也沒有許多東西要看的。execute 方法要做的第一件事情,和任何基于DynaForm的動作所做的一樣,就是將泛型ActionForm 類放到DynaValidatorForm內。這就使得我們可以在表格上使用get和set 方法。第二件事情就是,創建一個具有三個元素的類型Person 的排列。在這個方法中,尺寸是硬布線的,在實際應用中可以從數據庫中選擇一個尺寸。我們需要考慮的重要事情是排列應該在代碼中創建,而不是由Struts引擎自己創建。這樣行數可根據應用要求由代碼隨意指定。
  一旦排列已經確定,方法將創建三個Person 類實例并賦與數值。同樣,在實際的應用中可通過一個循環來實現,這個循環不斷地從數據庫中讀取行和填充表格行。最后,動作返回成功,導致Struts轉移控制到displayForm.jsp 頁。
  
  <!--
    Copyright 2004, James M Turner.
    All Rights Reserved
    
    -->
  
  <%@ taglib uri="/WEB-INF/struts-Html.tld" prefix="html" %>
  <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
  
  <head>
  <title>Star Wars Actor Fact Page</title>
  </head>
  <H1><center>Start Wars Actor Fact Page</title>
  <html:form action="/processActorComments" >
    <table border="1" width="80%">
      <tr><th>Last Name</th><th>First Name</th><th>Date of Birth</th><th>Comment</th></tr>
      <c:forEach var="people" items="${dynamicArrayForm.map.people}">
        <tr><td><c:out value="${people.lastName}"/></td>
          <td><c:out value="${people.firstName}"/></td>
          <td><c:out value="${people.dateOfBirth}"/></td>
          <td><html:text name="people" indexed="true" property="comment"/></td>
        </tr>
      </c:forEach>
    </table>
    <P/>
    <html:submit value="Update Comments"/>
  </html:form>
  
  同樣,這里也沒有很多東西要看的,他與我們上一篇文章查看固定長度的行時的代碼完全一樣。該頁迭代行(記住在JSTL中我們必須使用map 屬性來獲得到DynaForm 屬性的訪問),顯示演員的姓、名和出生日期,并提供文本域以便輸入注釋。
  當我們聚焦我們的瀏覽器合請求時,http://localhost:8080/struts/setupForm.do (假設你把struts.war 文件放在你本地機器的Tomcat 內),將會出現下列頁面:
  
  Start Wars Actor Fact Page Last Name First Name Date of Birth Comment
  Ford Harrison 07/13/1942 
  Fisher Carrie 10/21/1956 
  Hamill Mark 09/25/1951

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产婷婷香蕉久久久久久| 精品久久久免费| 欧美性生活大片免费观看网址| 亚洲字幕在线观看| 欧洲日韩成人av| 欧美日韩加勒比精品一区| 国产偷亚洲偷欧美偷精品| 亚洲最大的免费| 91精品国产综合久久香蕉的用户体验| 国产精品igao视频| 国产精品91久久| 日韩成人在线免费观看| 大伊人狠狠躁夜夜躁av一区| 欧美激情极品视频| 久久视频国产精品免费视频在线| 97在线观看免费高清| 日韩国产在线看| 日本一区二区三区四区视频| 92看片淫黄大片欧美看国产片| 亚洲第一网站免费视频| 欧美噜噜久久久xxx| 日韩视频免费中文字幕| 久久天天躁狠狠躁老女人| 日韩美女福利视频| 国产999视频| 欧美日韩国产色视频| 国产91精品网站| 国产一区二区三区高清在线观看| 国产精品99久久久久久久久| 欧美电影第一页| 久久综合伊人77777| 久久福利视频导航| 国产99久久精品一区二区永久免费| 成人免费激情视频| 国产精品高潮呻吟久久av黑人| 欧美一区二区三区图| 国产欧美日韩精品丝袜高跟鞋| 亚洲国产精品久久久久| 欧美日韩国产影院| 欧美激情亚洲激情| 美女福利视频一区| 久久久久久久久久久免费精品| 欧洲永久精品大片ww免费漫画| 亚洲成人久久久久| 亚洲第一国产精品| 中文字幕亚洲国产| 日韩在线中文视频| 欧洲日本亚洲国产区| 91在线免费观看网站| 国产精品成人aaaaa网站| 久久久久免费视频| 国产婷婷色综合av蜜臀av| 亚洲欧洲xxxx| 国产欧美va欧美va香蕉在| 成人免费淫片视频软件| 国产精品日韩电影| 国产精品 欧美在线| 亚洲视频网站在线观看| 日日狠狠久久偷偷四色综合免费| 日韩在线观看电影| 97国产一区二区精品久久呦| 日本欧美在线视频| 国产精品高清网站| 亚洲福利在线视频| 国产日本欧美一区| 久久97久久97精品免视看| 亚洲国产婷婷香蕉久久久久久| 日本久久91av| 最近的2019中文字幕免费一页| 欧美老肥婆性猛交视频| 欧美日韩国产91| 国产视频久久久久| 亚洲欧美三级在线| 国产美女精彩久久| 久久的精品视频| 97国产一区二区精品久久呦| 国产69久久精品成人看| 91免费综合在线| 亚洲一区二区三区视频播放| 欧美大尺度在线观看| 亚洲九九九在线观看| 久久久人成影片一区二区三区| 久久91亚洲精品中文字幕奶水| 日韩在线视频中文字幕| 日韩欧美亚洲范冰冰与中字| 日韩一二三在线视频播| 精品久久久久久中文字幕| 在线观看欧美日韩国产| 在线观看视频99| 97精品视频在线播放| 日本亚洲精品在线观看| 成人网在线观看| 欧美成人午夜激情在线| 成人激情视频在线观看| 国产精品视频不卡| 亚洲天堂av综合网| 国产精品igao视频| 国产不卡精品视男人的天堂| 亚洲人成电影在线观看天堂色| 精品呦交小u女在线| 国产精品永久免费在线| 欧美高清电影在线看| 亚洲欧美成人精品| 久久久视频精品| 亚洲国产成人久久综合一区| 久久成人精品电影| 久久久国产影院| 亚洲成av人乱码色午夜| 51色欧美片视频在线观看| 丰满岳妇乱一区二区三区| 国产精品久久久av久久久| 欧美洲成人男女午夜视频| 操人视频在线观看欧美| 久久久999精品| 国产精品99免视看9| 国产高清在线不卡| 亚洲国产精品久久久久秋霞不卡| 日本精品性网站在线观看| 国产主播欧美精品| 亚洲国产福利在线| 91沈先生作品| 在线电影av不卡网址| 日韩动漫免费观看电视剧高清| 午夜精品理论片| 91精品国产免费久久久久久| 欧美大片免费观看| 91精品国产高清久久久久久久久| 欧美精品一区二区免费| 色狠狠av一区二区三区香蕉蜜桃| 欧美大学生性色视频| 国模叶桐国产精品一区| 亚洲美女av在线| 亚洲xxxxx性| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩第一视频| 欧美日韩中文在线观看| 日韩av中文字幕在线播放| 色多多国产成人永久免费网站| 国产精品大陆在线观看| 亚洲精品自拍视频| 欧美有码在线视频| 欧美激情视频网站| 久久99精品国产99久久6尤物| 色噜噜亚洲精品中文字幕| 国产一区二区三区免费视频| 欧美亚洲在线视频| 欧美中文字幕视频在线观看| 国产日韩欧美在线看| 亚洲女在线观看| 国产一区视频在线| 日韩欧美在线中文字幕| 黑人与娇小精品av专区| 欧美中文在线观看国产| 久久五月天色综合| 欧美日韩国产精品一区二区不卡中文| 欧美久久久精品| 国产精品日韩在线观看| 欧美一级电影久久| www.欧美视频| 国产精品在线看| 亚洲成avwww人| 国产精品一区二区久久| 国产一区二区丝袜高跟鞋图片| 国产精品露脸自拍|