我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
          官方文檔 http://struts.apache.org/1.2.9/userGuide/struts-html.html
          與form相關(guān)的標(biāo)簽包括?標(biāo)簽本身以及所有必須包含在其中的標(biāo)簽。比如,和標(biāo)簽就是和form相關(guān)的標(biāo)簽,因?yàn)槿绻话阉鼈兎诺揭粋€form中它們就沒有意義。

          <form>標(biāo)簽

          標(biāo)簽用于生成一個HTML?form。使用該標(biāo)簽時(shí)必須遵循許多規(guī)則。

          首先,標(biāo)簽中必須包含一個action屬性,它是這個標(biāo)簽中唯一必需的屬性。如果不具備該屬性則JSP頁面會拋出一個異常。之后你必須給這個action屬性指定一個有效值。一個有效值是指應(yīng)用程序的Struts配置文件中元素里的任何一個子元素的訪問路徑。而且相應(yīng)的元素中必須有一個name屬性,它的值是form?bean的名稱。

          例如,如果你有這樣一個標(biāo)簽:??<html:form?action=\"/login\"?>?
          ?


          那么你的Struts配置文件的元素中必須有一個如下顯示為粗體的元素:?????<action-mappings>?
          ?????<action?path=\"/login\"?
          ??????type=\"com.javapro.struts.LoginAction\"??
          ??????name=\"loginForm\"
          ??????scope=\"request\"
          ??????input=\"/login.jsp\">
          ??????<forward?name=\"success\"?path=\"/mainMenu.jsp\"/>
          ????</action>
          ????.
          ????.
          ????.
          ??</action-mappings>


          這就是說一個form標(biāo)簽是和form?bean相關(guān)聯(lián)的。

          另一個要遵循的規(guī)則是:任何包含在<form>中用來接收用戶輸入的標(biāo)簽(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必須在相關(guān)的form?bean中有一個指定的屬性值。比如,如果你有一個屬性值被指定為“username”的<text>標(biāo)簽,那么相關(guān)的form?bean中也必須有一個名為“username”的屬性。輸入<text>標(biāo)簽中的值會被用于生成form?bean的userName屬性。

          除了上面所講的屬性之外,<form>標(biāo)簽還有一些不是必須但加上更好的“次要”的屬性。比如,你可以用focus屬性來生成JavaScript,它會“定焦”(focus)到該form所包含的一個元素上。使用focus屬性時(shí)你需要給它指定元素的名稱。比如,以下代碼是定焦在第二個Text元素上的:?<body>
          <html:form?action=\"/login\"?focus=\"password\">
          User?Name:?<html:text?property=\"userName\"/>
          <br>Password:?<html:text?property=\"password\"/>
          <br><html:submit/>
          </html:form>
          </body>

          該段代碼會被轉(zhuǎn)換成:?<body>
          <form?name=\"loginForm\"?method=\"post\"?
          ???action=\"/myStrutsApp6/login.do\">
          User?Name:?<input?type=\"text\"?name=\"userName\"?
          ???value=\"\">
          <br>Password:?<input?type=\"text\"?
          ???name=\"password\"?value=\"\">
          <br><input?type=\"submit\"?
          ???value=\"Submit\">
          </form>
          <script?language=\"JavaScript\"?
          ???type=\"text/javascript\">
          ??<!--
          ?if?(document.forms[\"loginForm\"].elements[
          ??????\"password\"].type?!=?\"hidden\")?
          ????document.forms[\"loginForm\"].elements[
          ??????\"password\"].focus()
          ??//?-->
          </script>

          </body>

          注意,<form>標(biāo)簽中method屬性的缺省值是POST。另外,有沒有看到這個標(biāo)簽庫是如何建立JavaScript來定焦到password元素上的??這也是該庫讓人著迷的地方之一。你不用擔(dān)心如何在客戶端進(jìn)行編程,它會幫你自動生成。

          在運(yùn)行前面的例子時(shí)還要注意,你必須有一個包含userName和password屬性的相關(guān)form。?

          <text>標(biāo)簽

          <text>標(biāo)簽用于生成一個文本的輸入?yún)^(qū)域。它必須包含和相關(guān)form?bean中的相同屬性對應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個<form>標(biāo)簽中時(shí)才有效。

          例如:?<html:text?property=\"userName\"/>
          會被轉(zhuǎn)換成:?<input?type=\"text\"?name=\"userName\"?value=\"\">

          <password>標(biāo)簽

          <password>標(biāo)簽用于生成一個口令字(type?password)的輸入?yún)^(qū)域。它必須包含和相關(guān)form?bean中的相同屬性對應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個<form>標(biāo)簽中時(shí)才有效。該標(biāo)簽中的一個很重要的屬性是“redisplay”,它用于重新顯示以前輸入到這個區(qū)域中的值。該屬性的缺省值為true。然而,為了使password不能被重新顯示,你或許希望將該屬性的值設(shè)為false。

          例如:?<html:password?property=\"password\"?
          ???redisplay=\"false\"/>
          會被轉(zhuǎn)換成:?<input?type=\"password\"?name=\"password\"?
          ???value=\"\">

          <hidden>標(biāo)簽

          <hidden>標(biāo)簽用于生成一個隱藏文本的輸入?yún)^(qū)域。它必須包含和相關(guān)form?bean中的相同屬性對應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個<form>標(biāo)簽中時(shí)才有效:

          例如:?<html:hidden?property=\"userName\"/>

          會被轉(zhuǎn)換成:?<input?type=\"hidden\"?name=\"userName\"?value=\"\">

          <textarea>標(biāo)簽

          <textarea>標(biāo)簽用于生成一個文本區(qū)元素(text?area?element)。它必須包含和相關(guān)form?bean中的相同屬性對應(yīng)的“property”屬性。

          比如:?<html:textarea?property=\"details\"?
          ??cols=\"80\"
          ??rows=\"20\"
          ??value=\"Enter?details?here\"/>
          會被轉(zhuǎn)換成:?<textarea?name=\"details\"?cols=\"80\"?
          ??rows=\"20\">Enter?details?here</textarea>

          <radio>標(biāo)簽

          <html:radio>標(biāo)記用來顯示HTML單選鈕控件,屬性如下:

          屬性

          描述

          Name

          Bean的名稱,其屬性會被用來確定單選鈕是否以選中的狀態(tài)顯示。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          property

          當(dāng)表單被提交時(shí)送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定單選鈕是否以被選中狀態(tài)進(jìn)行顯示的bean屬性的名稱

          Value

          當(dāng)單選鈕被選中時(shí)返回到服務(wù)器的值


          <radio>標(biāo)簽用于顯示一個單選按鈕(radio?button)。它必須包含“value”屬性。比如這段代碼:?<html:radio?property=\"title\"?value=\"1\"/>Mr.
          <html:radio?property=\"title\"?value=\"2\"/>Ms.
          <html:radio?property=\"title\"?value=\"3\"/>Dr.

          會被轉(zhuǎn)換成這樣的HTML:?<input?type=\"radio\"?name=\"title\"?
          ???value=\"1\">Mr.
          <input?type=\"radio\"?name=\"title\"?
          ???value=\"2\">Ms.
          <input?type=\"radio\"?name=\"title\"?
          ???value=\"3\">Dr.
          <checkbox>標(biāo)簽
          <checkbox>標(biāo)簽用于顯示checkbox類型的輸入?yún)^(qū)域。比如:?<html:checkbox?property=
          ???\"notify\"/>Please?send?me?notification
          會被轉(zhuǎn)換成:?<input?type=\"checkbox\"?name=\"notify\"?
          ???value=\"on\">Please?send?me?notification

          <submit>標(biāo)簽

          <submit>標(biāo)簽用于生成提交類型(type?submit)的輸入?yún)^(qū)域。比如:?<html:submit?value=\"Login\"/>
          會被轉(zhuǎn)換成:?<input?type=\"submit\"?value=\"Login\">

          <reset>標(biāo)簽

          <reset>標(biāo)簽用于生成重置類型(type?reset)的輸入?yún)^(qū)域。比如:?<html:reset/>
          會被轉(zhuǎn)換成:?<input?type=\"reset\"?value=\"Reset\">

          <option>標(biāo)簽

          <option>標(biāo)簽用于顯示select?box中的一個選項(xiàng)。參照下面的<select>標(biāo)簽。

          <select>標(biāo)簽?

          <select>標(biāo)簽用于顯示一個包含零個或更多選項(xiàng)的HTML選擇元素。它必須被嵌入一個<form>標(biāo)簽中才有效。下面這個例子將說明如何使用該標(biāo)簽:?<html:select?property=\"color\"?size=\"3\">
          ??<html:option?value=
          ??????\"r\">red</html:option>
          ??<html:option?value=
          ??????\"g\">green</html:option>
          ??<html:option?value=

          ??????\"b\">blue</html:option>
          </html:select>

          會被轉(zhuǎn)換成:?<select?name=\"color\"?size=\"3\"><option?
          ??????value=\"r\">red</option>
          ??<option?value=\"g\">green</option>
          ??<option?value=\"b\">blue</option>
          </select>

          <html:file>標(biāo)簽

          <html:file>標(biāo)簽需要注意以下幾點(diǎn):
          a:<html:file>必須嵌套在<html:form>標(biāo)簽中.
          b:<html:form>標(biāo)簽的method屬性必須設(shè)為"post".
          c:<html:form>標(biāo)簽的編碼類型enctype屬性必須設(shè)為"multipart/form-data".
          d:<html:file>標(biāo)簽必須設(shè)置property屬性,這個屬性和ActionForm Bean中FormFile類性的屬性對應(yīng).

          在ActionForm Bean中設(shè)置FormFile屬性
          /**
          *The file that the user has uploaded
          */
          private FormFile file;
          public FormFile getFile(){
          ???return this.file;
          }
          public void setFile(FormFile file){
          ???this.file? file;
          }

          在Action類中處理文件上傳
          String dir = servlet.getServletContext().getRealPath("/upload");
          HtmlFileForm hff = (HtmlFileForm)form;

          FormFile file = hff.getFile();

          if(file == null)
          ???? return mapping.findForward("error");

          String fname = file.getFileName();
          String size = Integer.toString(file.getFileSize())+"bytes";

          InputStream streamIn = file.getInputStream();
          OutputStream streamOut = new FileOutputStream(dir+"/"+fname);

          int bytesRead = 0;
          byte[] buffer = new byte[8192];
          while((bytesRead = streamIn.read(buffer,0,8192)) != -1){
          ???streamOut.write(buffer,0,bytesRead);
          }

          streamOut.clase();
          streamIn.close();


          摘自:blog.csdn.net


          posted on 2006-12-26 13:01 java_蟈蟈 閱讀(1203) 評論(0)  編輯  收藏 所屬分類: STRUTS
          主站蜘蛛池模板: 嘉鱼县| 贵阳市| 镇坪县| 微博| 余干县| 辽宁省| 健康| 越西县| 阆中市| 元氏县| 西乡县| 榆中县| 太湖县| 清水河县| 盐亭县| 宜阳县| 宁安市| 周至县| 西乌珠穆沁旗| 高碑店市| 沅陵县| 临夏县| 通化市| 仙居县| 泌阳县| 类乌齐县| 遂川县| 成都市| 朝阳区| 霸州市| 青浦区| 陇川县| 堆龙德庆县| 开封市| 万宁市| 泰兴市| 宝清县| 香港 | 太康县| 集贤县| 扎赉特旗|