Struts1.2.4学习心得!(四)

本次博客记录第四次学习情况,碰到与Struts1.1不同之处,即ActionForm类不局限于String型,可为任意数据类型。还介绍了表单录入(含bean的嵌套),如通过指定位置为nested类的属性设定值,录入数据会填充到相应类中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四次学习:

这次学习碰到了与struts1.1很不同的地方,就是ActionForm类不仅仅是String型,可以是任意数据类型了.

1.表单录入(含bean的嵌套).

设有一个testBean类,这个类中又含有一个nested属性(nested为一个类的实例),当要为nested类的booleanProperty属性设定值时用nested.booleanProperty指定位置.下面例子录入数据时,数据填充到testBean和nested中去.

java代码: 

 1   
 2   <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
 3   <%@ taglib uri="/tags/struts-html" prefix="html" %>
 4   <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
 5   <html:html>
 6     <head>
 7       <title>Test struts-html Property Setters</title>
 8     </head>
 9     <body>
 10      <div align="center">
 11        <h1>Test struts-html Property Setters</h1>
 12      </div>
 13      <p>Whatever changes you make to properties should be reflected when the page is redisplayed. Press "Save" to update, or "Cancel" to return to the main menu.</p>
 14      <html:form action="/html-setters-submit">
 15        <table border="0" width="100%">
 16          <tr>
 17            <th align="center" colspan="4">Scalar Properties</th>
 18          </tr>
 19          <tr>
 20            <th align="right">booleanProperty</th>
 21            <td align="left">
 22              <html:checkbox property="booleanProperty" />
 23            </td>
 24            <th align="right">nested.booleanProperty</th>
 25            <td align="left">
 26              <html:checkbox property="nested.booleanProperty" />
 27            </td>
 28          </tr>
 29          <tr>
 30            <th align="right">doubleProperty</th>
 31            <td align="left">
 32              <html:text property="doubleProperty" size="32" />
 33            </td>
 34            <th align="right">nested.doubleProperty</th>
 35            <td align="left">
 36              <html:text property="nested.doubleProperty" size="32" />
 37            </td>
 38          </tr>
 39          <tr>
 40            <th align="right">floatProperty</th>
 41            <td align="left">
 42              <html:text property="floatProperty" size="32" />
 43            </td>
 44            <th align="right">nested.floatProperty</th>
 45            <td align="left">
 46              <html:text property="nested.floatProperty" size="32" />
 47            </td>
 48          </tr>
 49          <tr>
 50            <th align="right">intProperty</th>
 51            <td align="left">
 52              <html:text property="intProperty" size="32" />
 53            </td>
 54            <th align="right">nested.intProperty</th>
 55            <td align="left">
 56              <html:text property="nested.intProperty" size="32" />
 57            </td>
 58          </tr>
 59          <tr>
 60            <th align="right">longProperty</th>
 61            <td align="left">
 62              <html:text property="longProperty" size="32" />
 63            </td>
 64            <th align="right">nested.longProperty</th>
 65            <td align="left">
 66              <html:text property="nested.longProperty" size="32" />
 67            </td>
 68          </tr>
 69          <tr>
 70            <th align="right">stringProperty</th>
 71            <td align="left">
 72              <html:text property="stringProperty" size="32" />
 73            </td>
 74            <th align="right">nested.stringProperty</th>
 75            <td align="left">
 76              <html:text property="nested.stringProperty" size="32" />
 77            </td>
 78          </tr>
 79          <tr>
 80            <th align="center" colspan="4">Indexed Properties</th>
 81          </tr>
 82          <tr>
 83            <th align="right">intIndexed[0]</th>
 84            <td align="left">
 85              <html:text property="intIndexed[0]" size="32" />
 86            </td>
 87            <th align="right">nested.intIndexed[0]</th>
 88            <td align="left">
 89              <html:text property="nested.intIndexed[0]" size="32" />
 90            </td>
 91          </tr>
 92          <tr>
 93            <th align="right">intIndexed[1]</th>
 94            <td align="left">
 95              <html:text property="intIndexed[1]" size="32" />
 96            </td>
 97            <th align="right">nested.intIndexed[1]</th>
 98            <td align="left">
 99              <html:text property="nested.intIndexed[1]" size="32" />
 100           </td>
 101         </tr>
 102         <tr>
 103           <th align="right">stringIndexed[0]</th>
 104           <td align="left">
 105             <html:text property="stringIndexed[0]" size="32" />
 106           </td>
 107           <th align="right">nested.stringIndexed[0]</th>
 108           <td align="left">
 109             <html:text property="nested.stringIndexed[0]" size="32" />
 110           </td>
 111         </tr>
 112         <tr>
 113           <th align="right">stringIndexed[1]</th>
 114           <td align="left">
 115             <html:text property="stringIndexed[1]" size="32" />
 116           </td>
 117           <th align="right">nested.stringIndexed[1]</th>
 118           <td align="left">
 119             <html:text property="nested.stringIndexed[1]" size="32" />
 120           </td>
 121         </tr>
 122         <tr>
 123           <td> </td>
 124           <td align="right">
 125             <html:submit>Save</html:submit>
 126           </td>
 127           <td align="left">
 128             <html:reset>Reset</html:reset>
 129             <html:cancel>Cancel</html:cancel>
 130           </td>
 131           <td> </td>
 132         </tr>
 133       </table>
 134     </html:form>
 135   </body>
 136 </html:html>
 137 
 138 



对应的TestBean


java代码: 

 1   
 2   /*
 3    * $Header: /home/cvs/jakarta-struts/src/examples/org/apache/struts/webapp/exercise/TestBean.java,v 1.4 2004/03/14 06:23:52 sraeburn Exp $
 4    * $Revision: 1.4 $
 5    * $Date: 2004/03/14 06:23:52 $
 6    *
 7    * Copyright 1999-2004 The Apache Software Foundation.
 8    *
 9    * Licensed under the Apache License, Version 2.0 (the "License");
 10   * you may not use this file except in compliance with the License.
 11   * You may obtain a copy of the License at
 12   *
 13   *      http://www.apache.org/licenses/LICENSE-2.0
 14   *
 15   * Unless required by applicable law or agreed to in writing, software
 16   * distributed under the License is distributed on an "AS IS" BASIS,
 17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 18   * See the License for the specific language governing permissions and
 19   * limitations under the License.
 20   */

 21  
 22  
 23  package org.apache.struts.webapp.exercise;
 24  
 25  
 26  import java.util.ArrayList;
 27  import java.util.Collection;
 28  import java.util.HashMap;
 29  import java.util.List;
 30  import java.util.Map;
 31  import java.util.Vector;
 32  import javax.servlet.http.HttpServletRequest;
 33  import org.apache.struts.action.ActionForm;
 34  import org.apache.struts.action.ActionMapping;
 35  import org.apache.struts.util.LabelValueBean;
 36  
 37  
 38  /**
 39   * General purpose test bean for Struts custom tag tests.
 40   *
 41   * @version $Revision: 1.4 $ $Date: 2004/03/14 06:23:52 $
 42   */

 43  
44  public class TestBean extends ActionForm {
 45  
 46  
 47      // ------------------------------------------------------------- Properties
 48  
 49  
 50      /**
 51       * A collection property where the elements of the collection are
 52       * of type <code>LabelValueBean</code>.
 53       */

 54      private Collection beanCollection = null;
 55  
56      public Collection getBeanCollection() {
57          if (beanCollection == null) {
 58              Vector entries = new Vector(10);
 59  
 60              entries.add(new LabelValueBean("Label 0", "Value 0"));
 61              entries.add(new LabelValueBean("Label 1", "Value 1"));
 62              entries.add(new LabelValueBean("Label 2", "Value 2"));
 63              entries.add(new LabelValueBean("Label 3", "Value 3"));
 64              entries.add(new LabelValueBean("Label 4", "Value 4"));
 65              entries.add(new LabelValueBean("Label 5", "Value 5"));
 66              entries.add(new LabelValueBean("Label 6", "Value 6"));
 67              entries.add(new LabelValueBean("Label 7", "Value 7"));
 68              entries.add(new LabelValueBean("Label 8", "Value 8"));
 69              entries.add(new LabelValueBean("Label 9", "Value 9"));
 70  
 71              beanCollection = entries;
 72          }
 73  
 74          return (beanCollection);
 75      }
 76  
77      public void setBeanCollection(Collection beanCollection) {
 78          this.beanCollection = beanCollection;
 79      }
 80  
 81  
 82      /**
 83       * A multiple-String SELECT element using a bean collection.
 84       */

 85      private String[] beanCollectionSelect = { "Value 1", "Value 3",
 86                                                "Value 5" };
 87  
88      public String[] getBeanCollectionSelect() {
 89          return (this.beanCollectionSelect);
 90      }
 91  
92      public void setBeanCollectionSelect(String beanCollectionSelect[]) {
 93          this.beanCollectionSelect = beanCollectionSelect;
 94      }
 95  
 96  
 97      /**
 98       * A boolean property whose initial value is true.
 99       */

 100     private boolean booleanProperty = true;
 101 
102     public boolean getBooleanProperty() {
 103         return (booleanProperty);
 104     }
 105 
106     public void setBooleanProperty(boolean booleanProperty) {
 107         this.booleanProperty = booleanProperty;
 108     }
 109 
 110 
 111     /**
 112      * A multiple-String SELECT element using a collection.
 113      */

 114     private String[] collectionSelect = { "Value 2", "Value 4",
 115                                           "Value 6" };
 116 
117     public String[] getCollectionSelect() {
 118         return (this.collectionSelect);
 119     }
 120 
121     public void setCollectionSelect(String collectionSelect[]) {
 122         this.collectionSelect = collectionSelect;
 123     }
 124 
 125 
 126     /**
 127      * A double property.
 128      */

 129     private double doubleProperty = 321.0;
 130 
131     public double getDoubleProperty() {
 132         return (this.doubleProperty);
 133     }
 134 
135     public void setDoubleProperty(double doubleProperty) {
 136         this.doubleProperty = doubleProperty;
 137     }
 138 
 139 
 140     /**
 141      * A boolean property whose initial value is false
 142      */

 143     private boolean falseProperty = false;
 144 
145     public boolean getFalseProperty() {
 146         return (falseProperty);
 147     }
 148 
149     public void setFalseProperty(boolean falseProperty) {
 150         this.falseProperty = falseProperty;
 151     }
 152 
 153 
 154     /**
 155      * A float property.
 156      */

 157     private float floatProperty = (float) 123.0;
 158 
159     public float getFloatProperty() {
 160         return (this.floatProperty);
 161     }
 162 
163     public void setFloatProperty(float floatProperty) {
 164         this.floatProperty = floatProperty;
 165     }
 166 
 167 
 168     /**
 169      * Integer arrays that are accessed as an array as well as indexed.
 170      */

 171     private int intArray[] = { 0, 10, 20, 30, 40 };
 172 
173     public int[] getIntArray() {
 174         return (this.intArray);
 175     }
 176 
177     public void setIntArray(int intArray[]) {
 178         this.intArray = intArray;
 179     }
 180 
 181     private int intIndexed[] = { 0, 10, 20, 30, 40 };
 182 
183     public int getIntIndexed(int index) {
 184         return (intIndexed[index]);
 185     }
 186 
187     public void setIntIndexed(int index, int value) {
 188         intIndexed[index] = value;
 189     }
 190 
 191 
 192     private int intMultibox[] = new int[0];
 193 
194     public int[] getIntMultibox() {
 195         return (this.intMultibox);
 196     }
 197 
198     public void setIntMultibox(int intMultibox[]) {
 199         this.intMultibox = intMultibox;
 200     }
 201 
 202     /**
 203      * An integer property.
 204      */

 205     private int intProperty = 123;
 206 
207     public int getIntProperty() {
 208         return (this.intProperty);
 209     }
 210 
211     public void setIntProperty(int intProperty) {
 212         this.intProperty = intProperty;
 213     }
 214 
 215 
 216     /**
 217      * A long property.
 218      */

 219     private long longProperty = 321;
 220 
221     public long getLongProperty() {
 222         return (this.longProperty);
 223     }
 224 
225     public void setLongProperty(long longProperty) {
 226         this.longProperty = longProperty;
 227     }
 228 
 229 
 230     /**
 231      * A multiple-String SELECT element.
 232      */

 233     private String[] multipleSelect = { "Multiple 3", "Multiple 5",
 234                                         "Multiple 7" };
 235 
236     public String[] getMultipleSelect() {
 237         return (this.multipleSelect);
 238     }
 239 
240     public void setMultipleSelect(String multipleSelect[]) {
 241         this.multipleSelect = multipleSelect;
 242     }
 243 
 244 
 245     /**
 246      * A nested reference to another test bean (populated as needed).
 247      */

 248     private TestBean nested = null;
 249 
250     public TestBean getNested() {
 251         if (nested == null)
 252             nested = new TestBean();
 253         return (nested);
 254     }
 255 
 256 
 257     /**
 258      * A String property with an initial value of null.
 259      */

 260     private String nullProperty = null;
 261 
262     public String getNullProperty() {
 263         return (this.nullProperty);
 264     }
 265 
266     public void setNullProperty(String nullProperty) {
 267         this.nullProperty = nullProperty;
 268     }
 269 
 270 
 271     /**
 272      * A short property.
 273      */

 274     private short shortProperty = (short) 987;
 275 
276     public short getShortProperty() {
 277         return (this.shortProperty);
 278     }
 279 
280     public void setShortProperty(short shortProperty) {
 281         this.shortProperty = shortProperty;
 282     }
 283 
 284 
 285     /**
 286      * A single-String value for a SELECT element.
 287      */

 288     private String singleSelect = "Single 5";
 289 
290     public String getSingleSelect() {
 291         return (this.singleSelect);
 292     }
 293 
294     public void setSingleSelect(String singleSelect) {
 295         this.singleSelect = singleSelect;
 296     }
 297 
 298 
 299     /**
 300      * String arrays that are accessed as an array as well as indexed.
 301      */

 302     private String stringArray[] =
 303     { "String 0", "String 1", "String 2", "String 3", "String 4" };
 304 
305     public String[] getStringArray() {
 306         return (this.stringArray);
 307     }
 308 
309     public void setStringArray(String stringArray[]) {
 310         this.stringArray = stringArray;
 311     }
 312 
 313     private String stringIndexed[] =
 314     { "String 0", "String 1", "String 2", "String 3", "String 4" };
 315 
316     public String getStringIndexed(int index) {
 317         return (stringIndexed[index]);
 318     }
 319 
320     public void setStringIndexed(int index, String value) {
 321         stringIndexed[index] = value;
 322     }
 323 
 324 
 325     private String stringMultibox[] = new String[0];
 326 
327     public String[] getStringMultibox() {
 328         return (this.stringMultibox);
 329     }
 330 
331     public void setStringMultibox(String stringMultibox[]) {
 332         this.stringMultibox = stringMultibox;
 333     }
 334 
 335     /**
 336      * A String property.
 337      */

 338     private String stringProperty = "This is a string";
 339 
340     public String getStringProperty() {
 341         return (this.stringProperty);
 342     }
 343 
344     public void setStringProperty(String stringProperty) {
 345         this.stringProperty = stringProperty;
 346     }
 347 
 348     /**
 349      * An empty String property.
 350      */

 351     private String emptyStringProperty = "";
 352 
353     public String getEmptyStringProperty() {
 354         return (this.emptyStringProperty);
 355     }
 356 
357     public void setEmptyStringProperty(String emptyStringProperty) {
 358         this.emptyStringProperty = emptyStringProperty;
 359     }
 360 
 361 
 362     /**
 363      * A single-String value for a SELECT element based on resource strings.
 364      */

 365     private String resourcesSelect = "Resources 2";
 366 
367     public String getResourcesSelect() {
 368         return (this.resourcesSelect);
 369     }
 370 
371     public void setResourcesSelect(String resourcesSelect) {
 372         this.resourcesSelect = resourcesSelect;
 373     }
 374 
 375 
 376     /**
 377      * A property that allows a null value but is still used in a SELECT.
 378      */

 379     private String withNulls = null;
 380 
381     public String getWithNulls() {
 382         return (this.withNulls);
 383     }
 384 
385     public void setWithNulls(String withNulls) {
 386         this.withNulls = withNulls;
 387     }
 388 
 389 
 390     /**
 391      * A List property.
 392      */

 393     private List listProperty = null;
 394 
395     public List getListProperty() {
396         if (listProperty == null) {
 397             listProperty = new ArrayList();
 398             listProperty.add("dummy");
 399         }
 400         return listProperty;
 401     }
 402 
403     public void setListProperty(List listProperty) {
 404         this.listProperty = listProperty;
 405     }
 406 
 407     /**
 408      * An empty List property.
 409      */

 410     private List emptyListProperty = null;
 411 
412     public List getEmptyListProperty() {
413         if (emptyListProperty == null) {
 414             emptyListProperty = new ArrayList();
 415         }
 416         return emptyListProperty;
 417     }
 418 
419     public void setEmptyListProperty(List emptyListProperty) {
 420         this.emptyListProperty = emptyListProperty;
 421     }
 422 
 423 
 424     /**
 425      * A Map property.
 426      */

 427     private Map mapProperty = null;
 428 
429     public Map getMapProperty() {
430         if (mapProperty == null) {
 431             mapProperty = new HashMap();
 432             mapProperty.put("dummy", "dummy");
 433         }
 434         return mapProperty;
 435     }
 436 
437     public void setMapProperty(Map mapProperty) {
 438         this.mapProperty = mapProperty;
 439     }
 440 
 441     /**
 442      * An empty Map property.
 443      */

 444     private Map emptyMapProperty = null;
 445 
446     public Map getEmptyMapProperty() {
447         if (emptyMapProperty == null) {
 448             emptyMapProperty = new HashMap();
 449         }
 450         return emptyMapProperty;
 451     }
 452 
453     public void setEmptyMapProperty(Map emptyMapProperty) {
 454         this.emptyMapProperty = emptyMapProperty;
 455     }
 456 
 457 
 458     // --------------------------------------------------------- Public Methods
 459 
 460 
 461     /**
 462      * Reset the properties that will be received as input.
 463      */

464     public void reset(ActionMapping mapping, HttpServletRequest request) {
 465 
 466         booleanProperty = false;
 467         collectionSelect = new String[0];
 468         intMultibox = new int[0];
 469         multipleSelect = new String[0];
 470         stringMultibox = new String[0];
 471         if (nested != null)
 472             nested.reset(mapping, request);
 473 
 474     }
 475 
 476 
 477 }
 478 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值