我现在遇到的问题.JSP上有很多明细项目,每条明细项目都一个下拉框(SELECT)
初始化是下拉框的值都是从DB里取得的.当我在画面上点一个按钮提交给ACTION时,如何再次取得下拉框的值?我现在的做法是:到DB里再取一次.假如有100行明细就得连100次DB,速度很慢.我现在想寻找别的方法,是不是画面上的所有值都在REQUEST里,我如何在REQUEST里去得下拉框的值?初始化后生成的HTML(明细的SELECT部分):
<select name="strDStxcd" size="1" style="width: 106">
  <option value=""></option>
  <option value="00">対象外(不&#12539;非)</option>
  <option value="03">免税売上</option>
  <option value="99">対象外(固定)</option>
</select>
我可以用request.getParameterValues()取得strDStxcd的一个数组,
但是数组里只有下拉框选中的值.我想取得下拉框里所有的值.请问大家如何处理.

解决方案 »

  1.   

    document.all.strDStxcd.你看看能不能取到这个对象 
      

  2.   

    request里的值只能用一次的,要想数据一直有效只能放在session里
      

  3.   

    你的意思是只生成一次,下次进入页面的时候就不用从DB里取对吗?可是可以,但这样很麻烦,而且不容易维护,还是从DB取的好
      

  4.   

    loveyousomuch(Allen) :我现在的情况速度太慢了,请问怎么在REQUEST里取得?
      

  5.   

    zhangji__2000(无奈的工作者)没明白你的意思,能说的详细点吗?
      

  6.   

    我的想法是这样的,如果你想从request中取出数据的话,不如一次从db中取出,然后在jsp页面中建一个数据结构,比如Enumeration,hashtable等什么的,然后每次从中取,不过象楼上某位仁兄说的,你可以用session.
      

  7.   

    用session的话数据太多比较占内存吧,可以把!数据库里的记录读出来,放到文件里,从文件读取速度就快多了。
      

  8.   

    这么写:
    <script language="javascript">
    function Check()
    {        var length1 = document.addRoleForm.clr1.length;
            var arr = new Array(length1);
            for (var i = 0; i < length1; i++)
            {
                arr[i] = document.addRoleForm.clr1[i].value
            }            document.addRoleForm.action = "addRoleAction.do?resource="+arr;
     
        document.addRoleForm.submit();
    }
    </script>
     <html:select multiple="multiple" property="clr1" size="6">
         <option value="plase"/>--请选择--</option>
         <html:option value="aa"/>
         <html:option value="bb"/>
     </html:select>
    <html:button value="添 加" onclick="Check();" property="Submit"/>
    在ActionForm中定义一个名字为clr1的字符串变量的属性字段,而在Action中,从ActionForm中接收到的clr1的值就是这个select里面所有的值,用逗号隔开的,譬如这个接收到的clr1就是:
    plase,aa,bb
      

  9.   

    tsylo(迷茫):
    你的办法比较简单可行.
    谢谢大家的回答.还有没有更简单点的做法呢?
      

  10.   

    uranovo能详细说一下吗?
    我的JSP:<html:select size="1" name = "oneNyuukin" property="strDStxcd">  <html:optionsCollection  property="listDStxcd" value="value" label="label" name="oneNyuukin" /></html:select>
      

  11.   

    从数据库中取出数据放在select里的时候,同时放request.setAttribute里一份。ok
      

  12.   

    request.setAttribute这个方法可行,我以前就是这么用的
      

  13.   

    linlin2005说的方法不太好,如果我通过页面上的脚本操作,使得select里面的元素增加了呢?
    那request里面的还是那些,没有变。
      

  14.   

    linlin2005:
    初始化时,放在REQUEST里,生成画面了.
    然后再提交,REQUEST里还有值吗?
    应该是没有了吧?因为这次请求已经结束了啊.
      

  15.   

    你页面初始化的时候已经把数据从db里拿出来了,用setAttribute方法放到request里,在页面用getAttribute取出来,jsp页面可以用                   
    <html:select property="xxx" styleClass="input">
    <option value="">Any</option>
    <html:options collection="xxx" property="aaa" labelProperty="bbb"  />
    </html:select>
    aaa 为你select 的value
    bbb为名称
    xxx为你serAttribute的名字