Struts1.2.4学习心得!(四)

本次博客记录了第四次学习中,struts1.1的不同之处,即ActionForm类不仅可以是String型,还能是任意数据类型。同时介绍了表单录入(含bean的嵌套),以testBean类为例,说明如何为嵌套类的属性设定值。

摘要生成于 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代码:copy.gif

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
23package org.apache.struts.webapp.exercise;
24
25
26import java.util.ArrayList;
27import java.util.Collection;
28import java.util.HashMap;
29import java.util.List;
30import java.util.Map;
31import java.util.Vector;
32import javax.servlet.http.HttpServletRequest;
33import org.apache.struts.action.ActionForm;
34import org.apache.struts.action.ActionMapping;
35import 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
code.gif44public 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
code.gif56 public Collection getBeanCollection() {
...}
code.gif57 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
code.gif77 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
code.gif88 public String[] getBeanCollectionSelect() {
...}
89 return (this.beanCollectionSelect);
90 }
91
code.gif92 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
code.gif102 public boolean getBooleanProperty() {
...}
103 return (booleanProperty);
104 }
105
code.gif106 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
code.gif117 public String[] getCollectionSelect() {
...}
118 return (this.collectionSelect);
119 }
120
code.gif121 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
code.gif131 public double getDoubleProperty() {
...}
132 return (this.doubleProperty);
133 }
134
code.gif135 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
code.gif145 public boolean getFalseProperty() {
...}
146 return (falseProperty);
147 }
148
code.gif149 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
code.gif159 public float getFloatProperty() {
...}
160 return (this.floatProperty);
161 }
162
code.gif163 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
code.gif173 public int[] getIntArray() {
...}
174 return (this.intArray);
175 }
176
code.gif177 public void setIntArray(int intArray[]) {
...}
178 this.intArray = intArray;
179 }
180
181 private int intIndexed[] = { 0, 10, 20, 30, 40 };
182
code.gif183 public int getIntIndexed(int index) {
...}
184 return (intIndexed[index]);
185 }
186
code.gif187 public void setIntIndexed(int index, int value) {
...}
188 intIndexed[index] = value;
189 }
190
191
192 private int intMultibox[] = new int[0];
193
code.gif194 public int[] getIntMultibox() {
...}
195 return (this.intMultibox);
196 }
197
code.gif198 public void setIntMultibox(int intMultibox[]) {
...}
199 this.intMultibox = intMultibox;
200 }
201
202 /**
203 * An integer property.
204 */

205 private int intProperty = 123;
206
code.gif207 public int getIntProperty() {
...}
208 return (this.intProperty);
209 }
210
code.gif211 public void setIntProperty(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值