急~~急!关于<html:multibox>的问题!
在STRUTS里,使用<html:multibox></html:multibox>标记,怎样把我选中的那些BOX的状态保存下来,也就是那些我大上的勾在我页面刷新后还存在。希望高手支招~~~ 问题点数:20、回复次数:41Top
1 楼yh2008141()回复于 2006-05-16 12:52:37 得分 0
不好意思,有点急,打错字了。是打上的勾,不是大勾。Top
2 楼z0031227()回复于 2006-05-16 14:00:52 得分 0
在FORM里面定义一个数组,和<html:multibox>的名字一样就可以了,然后action里面set一下就OK啦Top
3 楼yh2008141()回复于 2006-05-16 14:34:36 得分 0
请问:数组名是和<html:multibox>里的NAME的名字保持一致吗?
在线等待Top
4 楼z0031227()回复于 2006-05-16 15:13:02 得分 0
那当然了,要一样的.Top
5 楼yh2008141()回复于 2006-05-16 15:19:21 得分 0
FORM里我是这样定义的:
private String bb[]=new String[0];
public String[] getBb() {
return bb;
}
/**
* @param strings
*/
public void setBb(String[] strings) {
bb = strings;
}
JSP里是这样写的:
<html:multibox property="aa" name="edtOrderitemB1ActionForm" >
<bean:write name="element" property="fanhao" />
</html:multibox>
但是好像不好使!
有哪写错了没?
高手们看一下~~
错误提示:
找不到bb bean
Top
6 楼z0031227()回复于 2006-05-16 15:23:17 得分 0
<html:multibox property="aa" name="edtOrderitemB1ActionForm" >
里面的property属性名称和FORM里的数组名一样吗Top
7 楼yh2008141()回复于 2006-05-16 15:26:30 得分 0
一样!Top
8 楼yh2008141()回复于 2006-05-16 15:28:37 得分 0
啊,我贴错了,
private String aa[]=new String[0];
public String[] getAa() {
return aa;
}
/**
* @param strings
*/
public void setAa(String[] strings) {
aa = strings;
}
/**
* @return
*/Top
9 楼z0031227()回复于 2006-05-16 15:28:54 得分 0
private String bb[]=new String[0];
你这个里面数组名是bb吧
而<html:multibox property="aa" name="edtOrderitemB1ActionForm" >
是aaTop
10 楼z0031227()回复于 2006-05-16 15:30:00 得分 0
那怎么会提示找不到bb bean?你没有定义啊Top
11 楼yh2008141()回复于 2006-05-16 15:33:37 得分 0
我现在想要实现的就是:
我在第一页选上几个BOX,他们现在是选中状态,即划有勾,然后我 在点下一页(在这页我可能做了其他很多操作),之后,我在回到第一页,那几个BOX还是选中状态。Top
12 楼yh2008141()回复于 2006-05-16 15:34:09 得分 0
定义了Top
13 楼yh2008141()回复于 2006-05-16 15:35:17 得分 0
那个bb我不在FORM里就定义了吗Top
14 楼z0031227()回复于 2006-05-16 15:36:23 得分 0
我建议你要么在struts-config.xml里面把会话范围改成session,要么就用数据库来保存你在第一页里面选择的box,然后在action里面设定数组,然后在返回时就有了你想要的.Top
15 楼yh2008141()回复于 2006-05-16 15:39:19 得分 0
那些BOX保存的值我都能获得了,我关键是要当我再回到第一页时,那些以前被我选中的BOX 还是选中状态,即还划有勾。Top
16 楼z0031227()回复于 2006-05-16 15:44:11 得分 0
<bean:write name="element" property="fanhao" />
你这句里面的element 和property分别是什么?遍历?Top
17 楼yh2008141()回复于 2006-05-16 15:44:26 得分 0
你有例子吗,要不你给我发一个过来我看一下
谢谢了Top
18 楼yh2008141()回复于 2006-05-16 15:44:56 得分 0
是遍历Top
19 楼z0031227()回复于 2006-05-16 15:46:59 得分 0
那么你在action里面用setsetAa()了吗Top
20 楼z0031227()回复于 2006-05-16 15:47:23 得分 0
setAa()Top
21 楼yh2008141()回复于 2006-05-16 15:49:53 得分 0
edtOrderitemB1ActionForm.setAa(aa);
我在action是这样写的Top
22 楼z0031227()回复于 2006-05-16 15:54:22 得分 0
那你这个aa是怎么来的,通过数据库了么因为你前面在遍历,那就是从数据库中读的才对
我的例子是用hibernate进行数据操作的,可能和你的不一样.Top
23 楼yh2008141()回复于 2006-05-16 16:03:18 得分 0
我那aa是一个数组,我把数组里面的数依次存到了Aa中。上面的我没有写全。Top
24 楼yh2008141()回复于 2006-05-16 16:04:42 得分 0
aa里面放的是我通过选中时存的一些相应字段。Top
25 楼z0031227()回复于 2006-05-16 16:05:38 得分 8
那应该没问题的
你这个是不是这样的,先在数据库中读出所有类别,然后选择几个,提交后返回页面中刚才选择的几项前面要打勾?Top
26 楼yh2008141()回复于 2006-05-16 16:40:02 得分 0
恩 是的Top
27 楼yh2008141()回复于 2006-05-16 16:45:31 得分 0
啊 刚才网络断了 还在吗Top
28 楼figoren(figoren)回复于 2006-05-17 10:41:48 得分 8
使用multibox 来作多选框
1在actionForm里面定义一个所有项目列表 与 已经选择的项目数组
//已经选择的项目数组
private String[] prjType = new String[3];
//所有项目列表
private List typeList = new ArrayList();
2.在业务逻辑里面找出typeList赋给form中对应typeList,找出已经选出的项目数组赋给form中对应的prjType
3.在jsp页面上
<logic:iterate id="type" name="QueryOrgMemberForm" property="typeList"> //循环所有项目
<bean:define id="typeValue" name="type"/> //定义值
<%String typeValue2 = typeValue.toString();%>
<html:multibox property="prjType" value="<%=typeValue2%>"><%=typeValue2%></html:multibox>
//这里 property的名字一定要是form中定义已经选择的数组名字 prjType
//checkbox的名字是已经在form中定义存放所有选择项目数组的名字
//checkbox的值是循环每个列表而得到的
</logic:iterate>
测试
List typeList = new ArrayList();
typeList.add("abc");
typeList.add("bcd");
typeList.add("cde");
tForm.setTypeList(typeList);
String prjType[] = {"abc","cde"};
tForm.setPrjType(prjType);
//这里是得到页面上选择的值
String prjType2 [] = request.getParameterValues("prjType");
if(prjType2!=null)
Debug.print("the prjType is : "+prjType2.toString());Top
29 楼yh2008141()回复于 2006-05-17 10:59:00 得分 0
请问楼上的高手,这样不只是取到值了吗?能使我翻页回来后那些以前被选中的BOX还是选中状态吗?那些勾好像不存在了吧Top
30 楼yh2008141()回复于 2006-05-17 11:30:55 得分 0
这是我的相关部分代码:
在actionForm里面定义一个所有项目列表 与 已经选择的项目数组
//已经选择的项目数组:
private String aa[]=new String[0];
业务逻辑层里面我是这样做的:
String aa[] = (String[]) request.getParameterValues("aa");//获得我选中的字段
在jsp页面上
<html:multibox property="aa" name="edtOrderitemB1ActionForm" >
<bean:write name="element" property="fanhao" />
</html:multibox>
<INPUT TYPE="hidden" name="fanhao" value="<%=_fanhao%>"/>
</TD>
高手们帮我看一下, 还需要对哪些地方做处理。Top
31 楼harston(顽石)(风停了,雨停了,一路泥泞~)回复于 2006-05-17 11:32:00 得分 2
首先你要将form里面reset()中的aa去掉,否则struts在封装数据的时候会给你清空,其次,你数组中要存true和false,而不是名字,ok?Top
32 楼yh2008141()回复于 2006-05-17 11:55:50 得分 0
楼上的什么意思?我还是不太清楚。我得再单独建立一个数组存放true和false吗?Top
33 楼renkeyuan(学习)回复于 2006-05-17 12:51:14 得分 2
form里面reset(){
aa=null;
}Top
34 楼yh2008141()回复于 2006-05-17 12:53:39 得分 0
reset方法我去掉了Top
35 楼harston(顽石)(风停了,雨停了,一路泥泞~)回复于 2006-05-17 14:07:32 得分 0
你存了以后可以用
<html:notempty name="" property="">
<html:iterate ..
<html:logic name="" property="" value="true">
等来遍历输出,我看过这个标签的原码,不支持数组的。Top
36 楼figoren(figoren)回复于 2006-05-17 15:07:42 得分 0
你想点下一页的时候打的钩还在就需要你在后台处理了,在进入某个页面之前先把此页打过钩的值放到存放打钩的数组里Top
37 楼harston(顽石)(风停了,雨停了,一路泥泞~)回复于 2006-05-17 15:32:36 得分 0
支持Top
38 楼yh2008141()回复于 2006-05-17 15:38:50 得分 0
figoren(figoren)能不能具体的给我指点一下:我现在是在是不知道怎么下手了Top
39 楼yh2008141()回复于 2006-05-17 16:56:25 得分 0
出来了,谢谢大家的支持!!~!~~~Top
40 楼bokix(bokix)回复于 2006-05-17 17:35:03 得分 0
LZ的问题我也遇到过,我最后的解决方法是用js在页面里动态添加element:
if(icheckBox.checked == true){
var input1 = document.createElement("input");
input1.setAttribute("type","hidden");
input1.setAttribute("name","corpTokenNumberList");
input1.setAttribute("value", number);
icheckBox.parentNode.appendChild(input1);
......
.....
然后在页面上用logic:
<logic:iterate id="corpTokenForm" name="corpTokenActionForm" property="corpTokenNumberList" indexId="idx">
<html-el:hidden name="corpTokenActionForm" property="corpTokenNumberList" value="${corpTokenForm}"/>
</logic:iterate>
这样就能达到lz的要求了Top
41 楼activetblack()回复于 2006-07-13 10:07:08 得分 0
能不能共享一下你的方法 我也碰到了同样的问题 和你的一样Top




