CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

急~~急!关于<html:multibox>的问题!

楼主yh2008141()2006-05-16 12:50:46 在 Java / Web 开发 提问

在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

相关问题

关键词

得分解答快速导航

  • 帖主:yh2008141
  • z0031227
  • figoren
  • harston
  • renkeyuan

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo