你看struts自带的例子就行了。那个挺好的
解决方案 »
- Hibernate 对象空值数据库为NULL的问题
- struts2中在action中怎么获得jsp页面复选下拉列表的值
- java开发工程师有前途吗,能挣多少钱?望业内人士告知,感激!
- 关于2个session联合使用的问题。
- 急!菜鸟求助:如何创建返回类型为字符串的XML文件
- 大家帮忙看看这个是什么异常啊?这个是jive
- 能不能在j2se1.5的基础上升级为java EE5? --在线等
- HIBERNATE 使用DISTINCT 的问题,,不通过写SQL语句方式
- 关于汉字转化为拼音的ASCII规律
- 有谁用过SourceForge.net里面的Krysalis Barcode项目,能否详细介绍一下?
- 冒味!问个菜问题。我的浏览器为什么打不开java..()指向的网页?
- 请问如何在DOS下访问文件夹jboss-3.2.3 ?
1.Action中传集合(List)
List querykinds = queryKindProxy.getAllQueryKind();
request.setAttribute("querykinds" , querykinds);
querykinds集合中包含queryKind BEAN, queryKind BEAN中含有两个属性id, name.
2.在JSP中引用
<html:select property="querykind" styleClass="input" style="width:140px">
<html:options collection="querykinds" property="id" labelProperty="name"/>
</html:select><html:options>标记中collection表示传来的集合名称,property表示option中的值,labelProperty表示option中的text
如果在request中保存了一个LabelValueBean格式的Collection
可以简单的调用<html:optionsCollection>这个标签,使用起来更方便如
Collection colCountry;//如("中国","cn")... [label,value]
request.setAttribute("colCountry",colCountry);
///////////view.jsp
<html:select property="countryid">
<html:optionsCollection name="colCountry"/>
</html:select>///////////////////////
就会给你populate selectlist啦
在struts中,只要在FormBean中有实现collection的接口的属性
就可以了。我不愿看到request.setAttribute()这样的东西。
然后直接可以在jsp中这么用:<html:select
property = "listvalue" size="<%= String.valueOf(form.getListSize()) %>">
<html:optionsCollection name="ComA010F01" property="listBox" vlue="optionValue" label="optionLabel"/>
</html:select> listvalue:是FormBean的一个属性,用来保存selected的值
ComA010F01:是FormBean的名称
listBox:是FormBean的一个属性,保存的是colletion
optionValue:是数据保持bean的一个属性
optionLabel:也是。
一来程序中隐含了变量传递的过程,使程序不是很清晰易懂.
二来collection的接口的变量通常只是给HTML控件赋值,而在FORM提交时,
并不会用到集合变量,这样会给FormBean增加一些无用操作.
用Request传参方式,只是在需要时使用,应是最简单的方式.欢迎讨论.
select标签的property属性指定的是保存在当前page中的一个属性,这个属性是一个list,list中保存的内容是options标签生成的一系列选择框的value,也就是上面说的optionValue值,这个值指定了哪些按钮将被selected。
options标签的name和property指定page的一个属性,属性为list类型,list中保存了一系列的bean对象,而value和label就是这个bean对象的两个属性,分别表示选择框的item的value和label。
上面说listvalue是FormBean的一个属性,有些不明白,你的select标签没有指定FormBean,它是在options标签中指定的,那么listvalue怎么定位到FormBean呢?
如是传数组或是集合(如ArrayList)中BEAN中只有一个变量,可以用如下方式使用
<html:select property="tablename" styleClass="input">
<html:options name="tablenames" labelName="tablenames"/>
</html:select>
tablenames为数组名称或集合参数名称
select标签没有必要指定FormBean,
在FormBean里getlistvalue()和setlistvalue()就可以了。to gdx(灵犀):
1.我就是要屏蔽多一点的内容,让
写jsp的人用最少的代码实现功能就可以了。
2. 你可以看看
http://jakarta.apache.org/struts/doc-1.0.2/userGuide/building_model.html
关于ActionForm Beans的描述。
事实上集合并不会被提交。
并不会用到集合变量,这样会给FormBean增加一些无用操作."你说的很对,在FORM提交时,并不会用到集合变量。
既然不会用到,实际上是不存在集合变量。我想请教这样给FormBean增加了什么无用的操作?另外:我说不会提交是正确的,但是我说的要参见的文档跟提交不提交没关系。