- 浏览: 112573 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Stero:
多谢介绍!
JAVA性能/负载/压力测试工具 -
kingterrors:
JS一些正规表达式,方便大家学习 -
highill:
引用如果不需要交互的就用TagSupport,否则如果不需要交 ...
TagSupport与BodyTagSupport的区别 -
whq329:
汗,报错啦,
楼主这也敢写blog上来!
javascript:后退并刷新页面 -
rancococ:
你们这老板也太水了嘛。。。
我被公司老总忽悠了,
7.5.1 <html:select>标签
该标签对应HTML中的<select>元素,用于创建下拉列表框。<html:select>标签嵌入到<html:form>标签后成为表单的元素。
该标签必须包含property属性。与该标签关联的ActionForm Bean中要存在与property属性值匹配的setXXX()和getXXX()方法。当页面被加载时,getXXX()方法返回的值决定了哪个列表项被选中;当选中列表中的某个列表项提交表单后,Struts通过setXXX()方法将ActionForm Bean中对应的属性设置为被选中列表项的值。该标签的其他重要属性如下。
size:属性指定显示在页面中可见的列表项数目。
multiple:属性表示是否支持同时选择多项。忽略该属性时表示单项选择,此时与该标签关联的ActionForm Bean中与property属性对应的属性类型为String型。将该属性设置成任意字符串时表示多项选择,此时ActionForm Bean中的对应的属性类型为字符串数组。
请看下面的两个示例。
示例1:忽略multiple属性的下拉列表(地区选择列表)。
实现该下拉列表的代码如下。
所在地区:
<html:select property="shengfen" size="1">
<html:option value="BJ">北京</html:option>
<html:option value="JL">吉林</html:option>
<html:option value="SH">上海</html:option>
<html:option value="SZ">深圳</html:option>
</html:select>
说明:<html:option>标签用来生成下拉列表的一个列表项,在下一章节中有详细的介绍。
对应的ActionForm Bean的关键代码如下。
private String shengfen;
public void setShengfen(String shengfen){this.shengfen=shengfen;}
public String getShengfen(){return this.shengfen;}
如果选中“吉林”列表项,则shengfen属性的值为“JL”。运行结果如图7.2所示。
示例2:多选下拉列表框(个人爱好多选列表)。
实现该多选下拉列表的代码如下。
个人爱好:
<html:select property="links" multiple="yes" size="3">
<html:option value="IE">上网</html:option>
<html:option value="YY">游泳</html:option>
<html:option value="SP">购物</html:option>
<html:option value="PP">乒乓球</html:option>
</html:select>
对应的ActionForm Bean的关键代码如下。
private String[] likes;
public void setLikes(String[] likes){this.likes=likes;}
public String[] getLikes(){return this.likes;}
若选中“游泳”与“购物”两个列表项,如图7.3所示。则字符串数组likes的值为:{"YY","SP"}。
图7.2 单选下拉列表 图7.3 多选下拉列表
7.5.2 <html:option>标签
该标签对应HTML中的<option>元素。<html:option>标签需被嵌套在<html:select>标签中生成一个下拉列表项。
该标签必须包含value属性,表示选项的值,该值会通过请求被传递到服务器中。如下面的代码。
<html:form action="logon">
姓名:<html:text property="username"/>
性别:<html:select size="1" property="usersex">
<html:option value="man">男</html:option>
<html:option value="women">女</html:option>
</html:select>
<html:sumit value="Logon"/>
</html:form>
运行结果如图7.4所示。
图7.4 使用<html:option>标签创建下拉列表
选中“男”选项提交表单,会生成如下请求(假设当前应用程序为Logon,输入的username属性值为yxq)。
http://localhost:8080/Logon/logon.do?username=yxq&usersex=man
选项的标签(显示给用户的信息)可通过如下方法显示。
(1)将要显示的信息放在<html:option>与</html:option>之间。如上面的代码。
(2)通过bundle和key属性指定的资源文件中的内容来显示。
bundle属性指定了资源文件的引用名,表示在哪个资源文件中进行查找。它与Struts配置文件中<message-resources>元素的key属性匹配。
key属性对应bundle属性指定的资源文件中的消息关键字。
假设在当前应用下的/WEB-INF/classes/com/messages/文件夹下建立了一个UserSex. properties资源文件,内容如下。
user.sex.man=Man
user.sex.women=Women
在Struts配置文件中进行如下配置。
<message-resources parameter="com.messages.UserSex" key="sex"/>
实现下拉列表框的代码如下。
<html:select property="usersex">
<html:option value="man" bundle="sex" key="user.sex.man"/>
<html:option value="woman" bundle="sex" key="user.sex.women"/>
</html:select>
上述代码将会生成如下HTML元素。
<select name="usersex">
<option value="man">Man</option>
<option value="women">Women</option>
</select>
7.5.3 <html:options>标签
该标签需被嵌套在<html:select>标签中生成一组下拉列表项,即多个HTML中的<option>元素。<html:select>标签中可包含多个<html:options>标签。
有以下几种方法从指定的对象中生成列表项。
(1)使用collection属性指定的存在某个范围中的集合来生成列表项。
(2)使用name属性指定的存在某个范围中的对象来生成列表项。
(3)使用name属性指定的存在某个范围中的对象,并由property属性指定该对象的某个属性来生成列表项。
使用collection属性时,<html:options>标签将检索在JSP的范围内是否存在collection属性指定的集合对象,该对象中的每个元素为一个Bean,每个Bean表示一个列表项;然后调用Bean中匹配<html:options>标签的property属性值的getXXX()方法,来创建列表项的实际值(传递给服务器);同样通过调用Bean中匹配<html:options>标签的labelProperty属性值的getXXX()方法,来创建列表项的标签(显示给用户)。
1.使用collection属性创建下拉列表有两种方式。
自行编写collection属性指定对象中的Bean。
请看下面的实例。
实例位置:mr\07\sl\01
实例程序创建过程如下。
(1)创建与表单关联的ActionForm Bean:FangWeiForm。其关键代码如下。
例程7-1:光盘\mr\07\sl\01\src\com\options_1\actionform\FangWeiForm.java
package com.options_1.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
public class FangWeiForm extends ActionForm {
private String fangwei; //该属性对应<html:select property="fangwei">标签
……//省略了fangwei属性的getXXX()和setXXX()方法
/***********************************************************************************
*下面的方法为获取集合对象的方法,该集合对象中的每个元素为一个Bean,并且该Bean中存在
*与<html:options>标签中的property与labelProperty属性匹配的getXXX()和setXXX()方法
*********************************************************************************/
public Vector getFWlist(){
Vector fwlist=new Vector();
fwlist.add(new FangWeiBean("D","东"));
fwlist.add(new FangWeiBean("X","西"));
fwlist.add(new FangWeiBean("N","南"));
fwlist.add(new FangWeiBean("B","北"));
return fwlist;
}
}
(2)创建FangWeiBean类,关键代码如下。
例程7-1:光盘\mr\07\sl\01\src\com\options_1\actionform\FangWeiBean.java
package com.options_1.actionform;
public class FangWeiBean{
private String fw_name; //对应列表项的标签
private String fw_value; //对应列表项的实际值
public FangWeiBean(String fw_value,String fw_name){
this.fw_name=fw_name;
this.fw_value=fw_value;
}
public void setFw_name(String fw_name){
this.fw_name=fw_name;
}
public String getFw_name(){
return this.fw_name;
}
……//省略了fw_value属性的setXXX()和getXXX()方法
}
(3)创建index.jsp文件,该文件包含以下关键代码。
例程7-1:光盘\mr\07\sl\01\index.jsp
<jsp:useBean id="fws" class="com.options_1.actionform.FangWeiForm"/>
<% session.setAttribute("allfw",fws.getFWlist()); %>
<html:form action="selectfw"> //该表单对应FangWeiForm类
方位:
<html:select property="fangwei">
<html:options collection="allfw" property="fw_value" labelProperty="fw_name"/>
</html:select>
<html:submit value="提交"/>
</html:html>
说明如下:
① <html:options collection="allfw" property="fw_value" labelProperty="fw_name"/>标签对应FangWeiForm类中的getFWlist()方法返回的集合对象。在编写程序时,可在任意地方生成该集合对象,但要先将该集合对象存入JSP范围内,才能够使用<html:options>标签创建下拉列表。
② 上面代码中的<jsp:useBean/>标签的id属性值不能与session的allfw属性重名,否则<html:options>标签的collection属性值“allfw”指定的对象为FangWeiForm类,而不是通过FangWeiForm类中的getFWlist()方法获得的集合对象,会抛出下面的异常。
javax.servlet.ServletException: Cannot create iterator for com.options.actionform.FangWeiForm
运行结果如图7.5所示。
图7.5 方法一运行结果
选中“南”选项提交表单后生成如下请求。
http://localhost:8080/01/selectfw.do?fangwei=N
使用LabelValueBean类作为collection属性指定对象中的Bean。
该类存在org.apache.struts.util包下,在该类中分别表示下拉列表项的标签和实际值的两个属性为label和value。使用该类就可以替代上面的FangWeiBean类,此时<html:options>标签中的property属性和labelProperty属性的值分别为“value”和“label”。
请看下面的实例。
实例位置:mr\07\sl\02
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:MonthForm。其关键代码如下。
例程7-2:光盘\mr\07\sl\02\src\com\options_2\actionform\MonthForm.java
package com.options_2.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
import org.apache.struts.util.LabelValueBean;
public class MonthForm extends ActionForm {
private String month; //该属性对应<html:select property="month">标签
……//省略了month属性的setXXX()和getXXX()方法
/***********************************************************************************
*下面的方法为获取集合对象的方法,该集合对象中的每个元素为一个LavelValueBean类对象
**********************************************************************************/
public Vector getMonths(){
Vector monthlist=new Vector();
monthlist.add(new LabelValueBean("01月","1"));
monthlist.add(new LabelValueBean("02月","2"));
monthlist.add(new LabelValueBean("03月","3"));
return monthlist;
}
}
(2)创建index.jsp文件,该文件包含如下关键代码。
例程7-2:光盘\mr\07\sl\02\index.jsp
<jsp:useBean id="months" class="com.options_2.actionform.MonthForm"/>
<% session.setAttribute("getmonths",months.getMonths()); %>
<html:form action="selectmonth">
月份:
<html:select property="month">
<html:options collection="getmonths" property="value" labelProperty="label"/>
</html:select>
<html:submit value="提交"/>
</html:form>
</html:html>
运行结果如图7.6所示。
图7.6 方法二运行结果
选中“02月”选项提交表单后生成如下请求。
http://localhost:8080/02/selectmonth.do?month=2
2.使用name属性创建下拉列表
使用name属性指定一个对象,该对象中的每一个元素作为列表项的标签和实际值。请看下面的实例。
实例位置:mr\07\sl\03
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:HomeForm。具体代码如下。
例程7-3:光盘\mr\07\sl\03\src\com\options_name_1\actionform\HomeForm.java
package com.options_name_1.actionform;
import org.apache.struts.action.ActionForm;
public class HomeForm extends ActionForm {
private String myhome; //该属性对应<html:select proeprty="myhome">标签
public void setMyhome(String myhome){
this.myhome=myhome;
}
public String getMyhome(){
return this.myhome;
}
}
(2)创建index.jsp文件,该文件包含如下关键代码。
例程7-3:光盘\mr\07\sl\03\index.jsp
<%
ArrayList myhome=new ArrayList();
myhome.add("BeiJing");
myhome.add("JiLin");
myhome.add("ShenZhen");
session.setAttribute("home",myhome);
%>
<html:form action="selecthome"> //该表单与HomeForm类关联
省份:
<html:select property="myhome">
<html:options name="home"/> //该标签与mylome集合对象关联
</html:select>
<html:submit value="提交"/>
</html:form>
运行结果如图7.7所示。
图7.7 使用name属性创建下拉列表
选中“JiLin”选项后生成如下请求。
http://localhost:8080/03/selecthome.do?myhome=JiLin
当name属性与property属性一起使用时,通过由name属性指定的Bean中匹配由property属性指定的getXXX()方法返回一个对象,该对象中的每一个元素作为列表项的标签和实际值。若忽略name属性,则由与当前表单相关联的FormBean指定对象。请看下面的实例。
实例位置:mr\07\sl\04
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:SelectABCDForm。具体代码如下。
例程7-4:光盘\mr\07\sl\04\src\com\options_name_property\actionform\SelectABCD Form.java
package com.options_name_property.actionform;
import org.apache.struts.action.ActionForm;
public class SelectABCDForm extends ActionForm {
private String myselect; //该属性对应<html:select property="myselect">标签
public void setMyselect(String myselect){
this.myselect=myselect;
}
public String getMyselect(){
return this.myselect
}
}
(2)创建由<html:options>标签的name属性指定的Bean:AllSelect,该Bean中必须存在与<html:options>标签的property属性值匹配的setXXX()与getXXX()方法。具体代码如下。
例程7-4:光盘\mr\07\sl\04\src\com\options_name_property\actionform\AllSelect.java
package com.options_name_property.actionform;
public class AllSelect {
private String[] selects={"A","B","C","D"}; //该属性对应<html:options property="selects">标签
public void setSelects(String[] selects){
this.selects=selects;
}
public String[] getSelects(){
return this.selects;
}
}
(3)创建index.jsp文件,该文件中包含如下关键代码。
例程7-4:光盘\mr\07\sl\04\index.jsp
<jsp:useBean id="allselect" class="com.options_name_property.actionform.AllSelect"/>
<html:form action="selectabcd" method="get"> //与该表单关联的ActionForm Bean为SelectABCDForm
选择:<html:select property="myselect">
<html:options name="allselect" property="selects"/> //与该标签关联的Bean为AllSelect
</html:select>
<html:submit value="提交"/>
</html:form>
运行效果如图7.8所示。
图7.8 使用name属性与property属性创建下拉列表
选中“C”选项后生成如下请求。
http://localhost:8080/04/selectabcd.do?myselect =C
7.5.4 <html:optionsCollection>标签
该标签需被嵌套在<html:select>标签中生成一组下拉列表项,即多个HTML中的<option>元素。<html:select>标签中可包含多个<html:optionsCollection>标签。
<html:optionsCollection>标签与<html:options>标签很相似。该标签通过name属性或name与property属性指定一个对象,该对象中的每个元素为一个Bean,并且在Bean中具有分别与<html:optionsCollection>标签中的label属性和value属性指定的值匹配的getXXX()方法。其中label属性用来指定列表项的标签(显示给用户),value属性用来指定实际值(传递给服务器)。
请看下面的实例。
实例位置:mr\07\sl\05
实例程序创建过程如下。
(1)创建表单对应的ActionForm Bean:AgeForm。其关键代码如下。
例程7-5:光盘\mr\07\sl\05\src\com\optionsCollection\actionform\AgeForm.java
package com.optionsCollection.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
public class AgeForm extends ActionForm {
private String age; /该属性对应<html:select property="age">标签
private ArrayList myage=new ArrayList(); //该属性对应
//<html:optionsCollection property="myage">标签
public AgeForm(){
myage.add(new MyAge("鼠","1"));
myage.add(new MyAge("牛","2"));
myage.add(new MyAge("虎","3"));
}
public void setMyage(ArrayList myage){ this.myage=myage; }
public ArrayList getMyage(){ return this.myage; }
……//省略了age属性的getXXX()和setXXX()方法代码
}
(2)创建MyAge类,关键代码如下。
例程7-5:光盘\mr\07\sl\05\src\com\optionsCollection\actionform\MyAge.java
package com.optionCollection.actionform;
public class MyAge {
private String name;
private String truename;
public MyAge(String name,String truename){
this.name=name;
this.truename=truename;
}
……//省略了属性的getXXX()与setXXX()方法
}
(3)创建index.jsp文件,该文件包含如下关键代码。
例程7-5:光盘\mr\07\sl\05\index.jsp
<html:form action="selectage">
<tr><td align="center">属相:
<html:select property="age">
<html:optionsCollection property="myage" value="truename" label="name"/>
</html:select>
<html:submit value="提交"/>
</td></tr>
</html:form>
上面代码中<html:optionsCollection>标签忽略了name属性,Struts会将该标签与当前表单的FormBean关联。运行结果如图7.9所示。
xml 代码
文本框的使用
1. <s:textfield name="name" cssClass="w_180_input"/>
下拉列表的使用(从数据库中取数据)
1. <s:select list="venderList" listKey="id" listValue="name"
2. name="companyName" cssClass="sel_style_w_180"/>
xml 代码
1. <s:select list="profiles" name="profileId" listKey="id" listValue="key" value="%{profile.id}"
2. headerValue="all" headerKey="0" onchange="listContentByUaProfile();">
3. </s:select>
name="companyName"是在当前页面要显示字段的名字
多个选项的使用
1. <select name="downloadMethod" class="sel_style_w_180">
2. <option value="1">
3. <s:text name="wap"/>
4. >
5. <option value="2">
6. <s:text name="http"/>
7. option>
8. <option value="3">
9. <s:text name="wap_http"/>
10. option>
11. select>
是多余的代码自动生成
radio的使用
1. <td>
2. <input type="radio" name="colorFlag" value="true"
3. checked="checked"/>
4. <s:text name="true"/>
5. <input type="radio" name="colorFlag" value="false"/>
6. <s:text name="false"/>
7. td>
下拉列表,编辑页面
xml 代码
1. <s:select list="venderList" listKey="id" listValue="name" value="%{profile.companyName}"
2. name="companyName" cssClass="sel_style_w_180"/>
编辑页面的文本框回显
xml 代码
1. 一、 <s:textfield name="companyName" value="%{venderId}"
2. cssClass="w_180_input"/>
3. 二 、<s:textfield name="userAgentId" value="%{profile.userAgentId}"
4. cssClass="w_180_input"/>
5. 三、<s:hidden name="id" value="%{profile.userAgentId}"/>
下拉列表(自定义的数据)
一、添加页面
xml 代码
1. <select name="downloadMethod" class="sel_style_w_180">
2. <option value="1">
3. <s:text name="wap"/>
4. option>
5. <option value="2">
6. <s:text name="http"/>
7. option>
8. <option value="3">
9. <s:text name="wap_http"/>
10. option>
11. select>
二、编辑页面(将显示的值从资源文件中取出)
xml 代码
1. <s:set name="downloadMethods" value="#{'null' : getText('no_support'),'1' : getText('wap'), '2' : getText('http'), '3' : getText('wap_http')}"/>
2. <s:select list="downloadMethods" name="downloadMethod" value="profile.downloadMethod" cssClass="sel_style_w_180"/>
编辑页面回显radiao
xml 代码
1. <td>
2. <input type="radio" name="colorFlag" id="editProfile_colorFlag" value="true"
3. <s:if test="profile.colorFlag">checked="checked"s:if>
4. />
5. <s:text name="true"/>
6. <input type="radio" name="colorFlag" id="editProfile_colorFlag"
7. value="false"
8. <s:if test="!profile.colorFlag">checked="checked"s:if>
9. />
10. <s:text name="false"/>
11. td>
xml 代码
1. <s:submit value="%{getText('add')}" cssClass="bg_btn"/>
带参数的链接
xml 代码
1. <s:url id="url" action="listProfileDetail" includeParams="none">
2. <s:param name="userAgentId" value="userAgentId"/>
3. s:url>
4.
5. <s:a href="%{url}">
6. <s:property value="userAgentId"/>
7. s:a>
该标签对应HTML中的<select>元素,用于创建下拉列表框。<html:select>标签嵌入到<html:form>标签后成为表单的元素。
该标签必须包含property属性。与该标签关联的ActionForm Bean中要存在与property属性值匹配的setXXX()和getXXX()方法。当页面被加载时,getXXX()方法返回的值决定了哪个列表项被选中;当选中列表中的某个列表项提交表单后,Struts通过setXXX()方法将ActionForm Bean中对应的属性设置为被选中列表项的值。该标签的其他重要属性如下。
size:属性指定显示在页面中可见的列表项数目。
multiple:属性表示是否支持同时选择多项。忽略该属性时表示单项选择,此时与该标签关联的ActionForm Bean中与property属性对应的属性类型为String型。将该属性设置成任意字符串时表示多项选择,此时ActionForm Bean中的对应的属性类型为字符串数组。
请看下面的两个示例。
示例1:忽略multiple属性的下拉列表(地区选择列表)。
实现该下拉列表的代码如下。
所在地区:
<html:select property="shengfen" size="1">
<html:option value="BJ">北京</html:option>
<html:option value="JL">吉林</html:option>
<html:option value="SH">上海</html:option>
<html:option value="SZ">深圳</html:option>
</html:select>
说明:<html:option>标签用来生成下拉列表的一个列表项,在下一章节中有详细的介绍。
对应的ActionForm Bean的关键代码如下。
private String shengfen;
public void setShengfen(String shengfen){this.shengfen=shengfen;}
public String getShengfen(){return this.shengfen;}
如果选中“吉林”列表项,则shengfen属性的值为“JL”。运行结果如图7.2所示。
示例2:多选下拉列表框(个人爱好多选列表)。
实现该多选下拉列表的代码如下。
个人爱好:
<html:select property="links" multiple="yes" size="3">
<html:option value="IE">上网</html:option>
<html:option value="YY">游泳</html:option>
<html:option value="SP">购物</html:option>
<html:option value="PP">乒乓球</html:option>
</html:select>
对应的ActionForm Bean的关键代码如下。
private String[] likes;
public void setLikes(String[] likes){this.likes=likes;}
public String[] getLikes(){return this.likes;}
若选中“游泳”与“购物”两个列表项,如图7.3所示。则字符串数组likes的值为:{"YY","SP"}。
图7.2 单选下拉列表 图7.3 多选下拉列表
7.5.2 <html:option>标签
该标签对应HTML中的<option>元素。<html:option>标签需被嵌套在<html:select>标签中生成一个下拉列表项。
该标签必须包含value属性,表示选项的值,该值会通过请求被传递到服务器中。如下面的代码。
<html:form action="logon">
姓名:<html:text property="username"/>
性别:<html:select size="1" property="usersex">
<html:option value="man">男</html:option>
<html:option value="women">女</html:option>
</html:select>
<html:sumit value="Logon"/>
</html:form>
运行结果如图7.4所示。
图7.4 使用<html:option>标签创建下拉列表
选中“男”选项提交表单,会生成如下请求(假设当前应用程序为Logon,输入的username属性值为yxq)。
http://localhost:8080/Logon/logon.do?username=yxq&usersex=man
选项的标签(显示给用户的信息)可通过如下方法显示。
(1)将要显示的信息放在<html:option>与</html:option>之间。如上面的代码。
(2)通过bundle和key属性指定的资源文件中的内容来显示。
bundle属性指定了资源文件的引用名,表示在哪个资源文件中进行查找。它与Struts配置文件中<message-resources>元素的key属性匹配。
key属性对应bundle属性指定的资源文件中的消息关键字。
假设在当前应用下的/WEB-INF/classes/com/messages/文件夹下建立了一个UserSex. properties资源文件,内容如下。
user.sex.man=Man
user.sex.women=Women
在Struts配置文件中进行如下配置。
<message-resources parameter="com.messages.UserSex" key="sex"/>
实现下拉列表框的代码如下。
<html:select property="usersex">
<html:option value="man" bundle="sex" key="user.sex.man"/>
<html:option value="woman" bundle="sex" key="user.sex.women"/>
</html:select>
上述代码将会生成如下HTML元素。
<select name="usersex">
<option value="man">Man</option>
<option value="women">Women</option>
</select>
7.5.3 <html:options>标签
该标签需被嵌套在<html:select>标签中生成一组下拉列表项,即多个HTML中的<option>元素。<html:select>标签中可包含多个<html:options>标签。
有以下几种方法从指定的对象中生成列表项。
(1)使用collection属性指定的存在某个范围中的集合来生成列表项。
(2)使用name属性指定的存在某个范围中的对象来生成列表项。
(3)使用name属性指定的存在某个范围中的对象,并由property属性指定该对象的某个属性来生成列表项。
使用collection属性时,<html:options>标签将检索在JSP的范围内是否存在collection属性指定的集合对象,该对象中的每个元素为一个Bean,每个Bean表示一个列表项;然后调用Bean中匹配<html:options>标签的property属性值的getXXX()方法,来创建列表项的实际值(传递给服务器);同样通过调用Bean中匹配<html:options>标签的labelProperty属性值的getXXX()方法,来创建列表项的标签(显示给用户)。
1.使用collection属性创建下拉列表有两种方式。
自行编写collection属性指定对象中的Bean。
请看下面的实例。
实例位置:mr\07\sl\01
实例程序创建过程如下。
(1)创建与表单关联的ActionForm Bean:FangWeiForm。其关键代码如下。
例程7-1:光盘\mr\07\sl\01\src\com\options_1\actionform\FangWeiForm.java
package com.options_1.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
public class FangWeiForm extends ActionForm {
private String fangwei; //该属性对应<html:select property="fangwei">标签
……//省略了fangwei属性的getXXX()和setXXX()方法
/***********************************************************************************
*下面的方法为获取集合对象的方法,该集合对象中的每个元素为一个Bean,并且该Bean中存在
*与<html:options>标签中的property与labelProperty属性匹配的getXXX()和setXXX()方法
*********************************************************************************/
public Vector getFWlist(){
Vector fwlist=new Vector();
fwlist.add(new FangWeiBean("D","东"));
fwlist.add(new FangWeiBean("X","西"));
fwlist.add(new FangWeiBean("N","南"));
fwlist.add(new FangWeiBean("B","北"));
return fwlist;
}
}
(2)创建FangWeiBean类,关键代码如下。
例程7-1:光盘\mr\07\sl\01\src\com\options_1\actionform\FangWeiBean.java
package com.options_1.actionform;
public class FangWeiBean{
private String fw_name; //对应列表项的标签
private String fw_value; //对应列表项的实际值
public FangWeiBean(String fw_value,String fw_name){
this.fw_name=fw_name;
this.fw_value=fw_value;
}
public void setFw_name(String fw_name){
this.fw_name=fw_name;
}
public String getFw_name(){
return this.fw_name;
}
……//省略了fw_value属性的setXXX()和getXXX()方法
}
(3)创建index.jsp文件,该文件包含以下关键代码。
例程7-1:光盘\mr\07\sl\01\index.jsp
<jsp:useBean id="fws" class="com.options_1.actionform.FangWeiForm"/>
<% session.setAttribute("allfw",fws.getFWlist()); %>
<html:form action="selectfw"> //该表单对应FangWeiForm类
方位:
<html:select property="fangwei">
<html:options collection="allfw" property="fw_value" labelProperty="fw_name"/>
</html:select>
<html:submit value="提交"/>
</html:html>
说明如下:
① <html:options collection="allfw" property="fw_value" labelProperty="fw_name"/>标签对应FangWeiForm类中的getFWlist()方法返回的集合对象。在编写程序时,可在任意地方生成该集合对象,但要先将该集合对象存入JSP范围内,才能够使用<html:options>标签创建下拉列表。
② 上面代码中的<jsp:useBean/>标签的id属性值不能与session的allfw属性重名,否则<html:options>标签的collection属性值“allfw”指定的对象为FangWeiForm类,而不是通过FangWeiForm类中的getFWlist()方法获得的集合对象,会抛出下面的异常。
javax.servlet.ServletException: Cannot create iterator for com.options.actionform.FangWeiForm
运行结果如图7.5所示。
图7.5 方法一运行结果
选中“南”选项提交表单后生成如下请求。
http://localhost:8080/01/selectfw.do?fangwei=N
使用LabelValueBean类作为collection属性指定对象中的Bean。
该类存在org.apache.struts.util包下,在该类中分别表示下拉列表项的标签和实际值的两个属性为label和value。使用该类就可以替代上面的FangWeiBean类,此时<html:options>标签中的property属性和labelProperty属性的值分别为“value”和“label”。
请看下面的实例。
实例位置:mr\07\sl\02
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:MonthForm。其关键代码如下。
例程7-2:光盘\mr\07\sl\02\src\com\options_2\actionform\MonthForm.java
package com.options_2.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
import org.apache.struts.util.LabelValueBean;
public class MonthForm extends ActionForm {
private String month; //该属性对应<html:select property="month">标签
……//省略了month属性的setXXX()和getXXX()方法
/***********************************************************************************
*下面的方法为获取集合对象的方法,该集合对象中的每个元素为一个LavelValueBean类对象
**********************************************************************************/
public Vector getMonths(){
Vector monthlist=new Vector();
monthlist.add(new LabelValueBean("01月","1"));
monthlist.add(new LabelValueBean("02月","2"));
monthlist.add(new LabelValueBean("03月","3"));
return monthlist;
}
}
(2)创建index.jsp文件,该文件包含如下关键代码。
例程7-2:光盘\mr\07\sl\02\index.jsp
<jsp:useBean id="months" class="com.options_2.actionform.MonthForm"/>
<% session.setAttribute("getmonths",months.getMonths()); %>
<html:form action="selectmonth">
月份:
<html:select property="month">
<html:options collection="getmonths" property="value" labelProperty="label"/>
</html:select>
<html:submit value="提交"/>
</html:form>
</html:html>
运行结果如图7.6所示。
图7.6 方法二运行结果
选中“02月”选项提交表单后生成如下请求。
http://localhost:8080/02/selectmonth.do?month=2
2.使用name属性创建下拉列表
使用name属性指定一个对象,该对象中的每一个元素作为列表项的标签和实际值。请看下面的实例。
实例位置:mr\07\sl\03
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:HomeForm。具体代码如下。
例程7-3:光盘\mr\07\sl\03\src\com\options_name_1\actionform\HomeForm.java
package com.options_name_1.actionform;
import org.apache.struts.action.ActionForm;
public class HomeForm extends ActionForm {
private String myhome; //该属性对应<html:select proeprty="myhome">标签
public void setMyhome(String myhome){
this.myhome=myhome;
}
public String getMyhome(){
return this.myhome;
}
}
(2)创建index.jsp文件,该文件包含如下关键代码。
例程7-3:光盘\mr\07\sl\03\index.jsp
<%
ArrayList myhome=new ArrayList();
myhome.add("BeiJing");
myhome.add("JiLin");
myhome.add("ShenZhen");
session.setAttribute("home",myhome);
%>
<html:form action="selecthome"> //该表单与HomeForm类关联
省份:
<html:select property="myhome">
<html:options name="home"/> //该标签与mylome集合对象关联
</html:select>
<html:submit value="提交"/>
</html:form>
运行结果如图7.7所示。
图7.7 使用name属性创建下拉列表
选中“JiLin”选项后生成如下请求。
http://localhost:8080/03/selecthome.do?myhome=JiLin
当name属性与property属性一起使用时,通过由name属性指定的Bean中匹配由property属性指定的getXXX()方法返回一个对象,该对象中的每一个元素作为列表项的标签和实际值。若忽略name属性,则由与当前表单相关联的FormBean指定对象。请看下面的实例。
实例位置:mr\07\sl\04
实例程序创建过程如下。
(1)创建与表单关联的ActionFrom Bean:SelectABCDForm。具体代码如下。
例程7-4:光盘\mr\07\sl\04\src\com\options_name_property\actionform\SelectABCD Form.java
package com.options_name_property.actionform;
import org.apache.struts.action.ActionForm;
public class SelectABCDForm extends ActionForm {
private String myselect; //该属性对应<html:select property="myselect">标签
public void setMyselect(String myselect){
this.myselect=myselect;
}
public String getMyselect(){
return this.myselect
}
}
(2)创建由<html:options>标签的name属性指定的Bean:AllSelect,该Bean中必须存在与<html:options>标签的property属性值匹配的setXXX()与getXXX()方法。具体代码如下。
例程7-4:光盘\mr\07\sl\04\src\com\options_name_property\actionform\AllSelect.java
package com.options_name_property.actionform;
public class AllSelect {
private String[] selects={"A","B","C","D"}; //该属性对应<html:options property="selects">标签
public void setSelects(String[] selects){
this.selects=selects;
}
public String[] getSelects(){
return this.selects;
}
}
(3)创建index.jsp文件,该文件中包含如下关键代码。
例程7-4:光盘\mr\07\sl\04\index.jsp
<jsp:useBean id="allselect" class="com.options_name_property.actionform.AllSelect"/>
<html:form action="selectabcd" method="get"> //与该表单关联的ActionForm Bean为SelectABCDForm
选择:<html:select property="myselect">
<html:options name="allselect" property="selects"/> //与该标签关联的Bean为AllSelect
</html:select>
<html:submit value="提交"/>
</html:form>
运行效果如图7.8所示。
图7.8 使用name属性与property属性创建下拉列表
选中“C”选项后生成如下请求。
http://localhost:8080/04/selectabcd.do?myselect =C
7.5.4 <html:optionsCollection>标签
该标签需被嵌套在<html:select>标签中生成一组下拉列表项,即多个HTML中的<option>元素。<html:select>标签中可包含多个<html:optionsCollection>标签。
<html:optionsCollection>标签与<html:options>标签很相似。该标签通过name属性或name与property属性指定一个对象,该对象中的每个元素为一个Bean,并且在Bean中具有分别与<html:optionsCollection>标签中的label属性和value属性指定的值匹配的getXXX()方法。其中label属性用来指定列表项的标签(显示给用户),value属性用来指定实际值(传递给服务器)。
请看下面的实例。
实例位置:mr\07\sl\05
实例程序创建过程如下。
(1)创建表单对应的ActionForm Bean:AgeForm。其关键代码如下。
例程7-5:光盘\mr\07\sl\05\src\com\optionsCollection\actionform\AgeForm.java
package com.optionsCollection.actionform;
import java.util.*;
import org.apache.struts.action.ActionForm;
public class AgeForm extends ActionForm {
private String age; /该属性对应<html:select property="age">标签
private ArrayList myage=new ArrayList(); //该属性对应
//<html:optionsCollection property="myage">标签
public AgeForm(){
myage.add(new MyAge("鼠","1"));
myage.add(new MyAge("牛","2"));
myage.add(new MyAge("虎","3"));
}
public void setMyage(ArrayList myage){ this.myage=myage; }
public ArrayList getMyage(){ return this.myage; }
……//省略了age属性的getXXX()和setXXX()方法代码
}
(2)创建MyAge类,关键代码如下。
例程7-5:光盘\mr\07\sl\05\src\com\optionsCollection\actionform\MyAge.java
package com.optionCollection.actionform;
public class MyAge {
private String name;
private String truename;
public MyAge(String name,String truename){
this.name=name;
this.truename=truename;
}
……//省略了属性的getXXX()与setXXX()方法
}
(3)创建index.jsp文件,该文件包含如下关键代码。
例程7-5:光盘\mr\07\sl\05\index.jsp
<html:form action="selectage">
<tr><td align="center">属相:
<html:select property="age">
<html:optionsCollection property="myage" value="truename" label="name"/>
</html:select>
<html:submit value="提交"/>
</td></tr>
</html:form>
上面代码中<html:optionsCollection>标签忽略了name属性,Struts会将该标签与当前表单的FormBean关联。运行结果如图7.9所示。
xml 代码
文本框的使用
1. <s:textfield name="name" cssClass="w_180_input"/>
下拉列表的使用(从数据库中取数据)
1. <s:select list="venderList" listKey="id" listValue="name"
2. name="companyName" cssClass="sel_style_w_180"/>
xml 代码
1. <s:select list="profiles" name="profileId" listKey="id" listValue="key" value="%{profile.id}"
2. headerValue="all" headerKey="0" onchange="listContentByUaProfile();">
3. </s:select>
name="companyName"是在当前页面要显示字段的名字
多个选项的使用
1. <select name="downloadMethod" class="sel_style_w_180">
2. <option value="1">
3. <s:text name="wap"/>
4. >
5. <option value="2">
6. <s:text name="http"/>
7. option>
8. <option value="3">
9. <s:text name="wap_http"/>
10. option>
11. select>
是多余的代码自动生成
radio的使用
1. <td>
2. <input type="radio" name="colorFlag" value="true"
3. checked="checked"/>
4. <s:text name="true"/>
5. <input type="radio" name="colorFlag" value="false"/>
6. <s:text name="false"/>
7. td>
下拉列表,编辑页面
xml 代码
1. <s:select list="venderList" listKey="id" listValue="name" value="%{profile.companyName}"
2. name="companyName" cssClass="sel_style_w_180"/>
编辑页面的文本框回显
xml 代码
1. 一、 <s:textfield name="companyName" value="%{venderId}"
2. cssClass="w_180_input"/>
3. 二 、<s:textfield name="userAgentId" value="%{profile.userAgentId}"
4. cssClass="w_180_input"/>
5. 三、<s:hidden name="id" value="%{profile.userAgentId}"/>
下拉列表(自定义的数据)
一、添加页面
xml 代码
1. <select name="downloadMethod" class="sel_style_w_180">
2. <option value="1">
3. <s:text name="wap"/>
4. option>
5. <option value="2">
6. <s:text name="http"/>
7. option>
8. <option value="3">
9. <s:text name="wap_http"/>
10. option>
11. select>
二、编辑页面(将显示的值从资源文件中取出)
xml 代码
1. <s:set name="downloadMethods" value="#{'null' : getText('no_support'),'1' : getText('wap'), '2' : getText('http'), '3' : getText('wap_http')}"/>
2. <s:select list="downloadMethods" name="downloadMethod" value="profile.downloadMethod" cssClass="sel_style_w_180"/>
编辑页面回显radiao
xml 代码
1. <td>
2. <input type="radio" name="colorFlag" id="editProfile_colorFlag" value="true"
3. <s:if test="profile.colorFlag">checked="checked"s:if>
4. />
5. <s:text name="true"/>
6. <input type="radio" name="colorFlag" id="editProfile_colorFlag"
7. value="false"
8. <s:if test="!profile.colorFlag">checked="checked"s:if>
9. />
10. <s:text name="false"/>
11. td>
xml 代码
1. <s:submit value="%{getText('add')}" cssClass="bg_btn"/>
带参数的链接
xml 代码
1. <s:url id="url" action="listProfileDetail" includeParams="none">
2. <s:param name="userAgentId" value="userAgentId"/>
3. s:url>
4.
5. <s:a href="%{url}">
6. <s:property value="userAgentId"/>
7. s:a>
发表评论
-
Event/window.Event属性和方法
2010-04-22 17:33 1037Event/window.Event属性和方 ... -
Javascript的IE和Firefox兼容性汇编---收集篇
2009-09-11 09:16 1947js调试工具推荐 firefox 的 firebug 插件 ... -
AJAX基础知识
2009-01-02 21:32 769如何发送一个HTTP请求 ---"请!" ... -
JSON-RPC-Java 和DWR比较
2009-01-02 21:31 1583JSON-RPC-Java 和DWR比较 当前在以Java为后 ... -
javascript:后退并刷新页面
2008-11-11 13:51 3864<HTML> <HEAD> <T ... -
验证类
2008-11-04 10:27 735一、验证类 1、数字验证内 1.1 整数 / ...
相关推荐
PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选下拉列表框PB多选...
在UI设计中,下拉列表框是一种常用的输入控件,它允许用户从预定义的一组选项中进行选择,通常用于节省屏幕空间和提供更整洁的界面。当选项过多时,会显示滚动条以便用户浏览所有选项。 "带滚动条"的下拉列表框意味...
根据给定的信息,本文将详细...具体来说,它实现了从一个下拉列表框中选择某些项后,自动填充另一个下拉列表框的功能。这种交互式的设计可以极大地提高用户体验,特别是在需要处理复杂数据关系的应用场景中尤为重要。
在VC++编程环境中,开发一个带有图像的下拉列表框是一项常见的需求,它可以增强用户界面的视觉效果和交互性。这个“VC带图像的下拉列表框”项目旨在教你如何在MFC应用中实现这样的功能,这对于提升用户体验是至关...
"VB增强型下拉列表框.7z"是一个压缩包,包含了一个特别设计的下拉列表框控件,它扩展了标准VB下拉列表框的功能,尤其适合在与数据库交互时使用。这个控件可能包含了更丰富的特性,比如动态加载数据、搜索功能、分页...
在本文中,我们将深入探讨如何使用jQuery实现一个下拉列表框的日期选择功能。这个功能常见于各种网页应用,用于用户方便地输入日期和时间。我们将会解析标题和描述中的关键知识点,并提供实现这一功能所需的步骤和...
"下拉列表框美化"这一主题,主要是指通过特定的技术手段改进标准Combobox控件的外观,使其更加吸引人,提升用户体验。在这个过程中,"贴图"是一种常用的方法,它是指将图像应用到控件表面,以改变其视觉效果。 ...
**Ajax 下拉列表框详解** Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在Web开发中,它极大地提升了用户体验,使得页面交互更加流畅。本教程将...
`div模拟select自定义下拉列表框`是一种常见做法,它利用JavaScript(如jQuery)和CSS来实现,可以提供比原生`<select>`元素更丰富的样式控制和交互体验。本篇将详细介绍这种技术及其应用。 一、为什么使用div模拟...
HTML二级联动下拉列表框是一种常见的网页交互设计,它允许用户在两个或多个下拉菜单之间建立关联,以便根据用户在第一个下拉框中的选择动态更新第二个下拉框的内容。这种设计常见于区域选择,例如选择省份后,城市...
本篇文章将深入探讨如何使用`tkinter`来实现一个自定义的多选下拉列表框,该列表框具备滚动条功能以及全选选项。这在创建复杂的用户界面时尤其有用,因为它提供了更好的用户体验和更丰富的交互性。 首先,我们要...
标题中的“可编辑的下拉列表框”是指在网页或应用程序中的一种交互元素,它允许用户不仅能够从预设的选项中选择,还能直接编辑输入新的值。这种控件通常用于提供更灵活的数据输入方式,比如在需要用户输入特定项但又...
在IT领域,动态加载下拉列表框是一种常见的交互设计,特别是在网页或应用程序中。它允许用户从一个可扩展的选项列表中进行选择,而这些选项可能不会一次性全部显示,而是根据用户的操作动态加载。这种技术提高了用户...
在网页设计和开发中,用户界面的交互性是至关重要的,而下拉列表框、单选按钮和复选框则是构建这种交互性不可或缺的元素。本文将深入探讨这些控件在ASP(Active Server Pages)环境中的应用,尤其针对C#编程语言和...
【标题】"Web页面可编辑的下拉列表框源码"是关于前端开发的一个特定功能实现,主要聚焦在用户交互的增强上。在传统的网页设计中,下拉列表框(Dropdown List)通常只允许用户从预设的选项中选择,但这个源码提供了一...
本示例聚焦于如何在Delphi 7环境中利用XLSReadWriteII库来实现Excel文件的写入,同时创建带有下拉列表框的单元格,以及在不额外安装第三方控件的情况下处理GIF动画。以下是对这些技术的详细解释: 首先,Delphi 7是...
《dropList v1.1:JavaScript无限级联动下拉列表框深度解析》 在Web开发中,用户界面的交互性和易用性至关重要。一个优秀的下拉列表框不仅可以提高用户体验,还能有效节省页面空间。今天我们将深入探讨“dropList v...
在IT领域,尤其是在Web开发中,"无限级、无刷新、联动下拉列表框"是一种高效且用户体验良好的设计模式。这种技术通常应用于大型数据结构,如层级数据或分类系统,例如组织架构、地区层级或者产品分类等。在ASP.NET...
### 网页表单自动填写技术详解:下拉列表框、单选框、复选框自动填写方法 #### 一、网页下拉列表的自动填写实现方法 在现代Web应用开发中,为了提高用户体验及简化操作流程,网页表单自动填写功能逐渐成为一种重要...