最近在做毕业设计用的是struts1.3,在myeclipse 7.0平台下,需要把数据库中的值获取后显示在列表框中以供选择,但不知如何实现,因为数据库中的记录很多,开始我本想用弹出新窗口,并在新窗口中用表格显示的方法但太难了一点所以退而求其次改为列表框。还望各位高手不吝赐教! 如果有更好的方法也请明细。
     

解决方案 »

  1.   

    先从数据库中查询,保存到一个数组中,放到request中,在页面直接从request中获取就可以了
      

  2.   

    不难的,就是一个动态的下拉嘛。
    struts logic不是有个iterate标签 。
    先把数据查出来,然后放到名为name的list里,然后再页面上引用这个name就行了。
    也可以加些其他的present啊之类的,判断是否有数据。
    我用的struts1.2
      

  3.   

    public class ChaList extends TagSupport {//继承自TagSupport这个类 /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
     */
    public int doEndTag() throws JspException {
    // TODO Auto-generated method stub
    try{
    JspWriter out = pageContext.getOut();
    List<Map<String,String>> list = chaDao.getList();//取自数据库
    if(list != null && list.length > 0){
                                 out.println("<select name='cha_id'>"); //标签开始
    for(int i = 0;i < list.size();i++){
                                            Map chaMap = list.get(i);
    out.println("<option value='" + chaMap.get("id") + "'>" + chaMap.get("name")  + "</option>");//添加选项
    }
    out.println("</select>");//标签结束
    }
    }catch(Exception e){
    e.printStackTrace();
    }

    return super.doEndTag();
    }}
      

  4.   

    我做的时候有两种。一种是
    从数据库中获得 ,循环放在一个LIST中,然后放在request中,在页面得到LIST再,循环打出来。一种是自定义标签,
    <mytag:s name="name" value="" tablename="tablename" column="column" >
    在标签中得到 tablename="tablename" column="column" 那个表,那个字段,
    然后打印出来,
    下拉列表是凑出来的。
      

  5.   

    Struts中将数据库中的内容动态生成<html:select/> <html:option> <html:options>列表内容现在假设我们要实现这样的功能:修改某学生所在的系:DeptForm 中:       private String id;    private String name;    /** 这里省略了这个两个属性的getter, setter方法*/ StudentForm 中:    private String studentname ;    private String deptid ;    private String deptname ;        /** 这里省略了这个两个属性的getter, setter方法*/Action 中1.  首先要从数据库中读取学生的信息,封装在StudentForm的对象student里并把这个对象 student存放到session中session.setAttribute("student", student);2.  再从数据库读取所有的系,封装在一个List<DeptForm>的对象list里,并把这个对象放到session中session.setAttribute("dept_list", list);   以便在动态填充下拉列表JSP 页面中:<logic:notEmpty name="dept_list">              <html:select name="student" property="deptid">                        <html:options collection="dept_list" property="id" labelProperty="name"/>    </html:select></logic:notEmpty> 在<html:select name="student" property="deptid">中设置了name属性,就可以实现下拉列表中的默认值的设置。而这个默认值就是在上面第1步中封装了学生信息的student对象(最后放到了session中)里的deptid属性的值。或者可以这样说,从student表中查询某一个学生信息表,再从dept中查询出所有的系别信息。当该学生信息中的deptid等于系别信息中的id时,下拉列表中就默认显示该deptid对应的deptname
      

  6.   

    呵呵,不知道这里的列表框能不能给你理解为下拉框,这里你就直接做一个映射就可以了,直接mapping,mapping下面得到你所要的值,,当然,我是用ecside来做的,现在都不用了,如果你换成struts2来写,应该容易很多了,可以给你介绍一下,
      

  7.   

    不难的,就是一个动态的下拉嘛。 
    struts logic不是有个iterate标签 。 
    先把数据查出来,然后放到名为name的list里,然后再页面上引用这个name就行了。 
    也可以加些其他的present啊之类的,判断是否有数据。 
    我用的struts1.2
      

  8.   

    谢谢大家的回答,12楼的sebatinsky能再说具体一点吗?怎么直接映射!
    再补充一点,我是直接链接到要显示的那个JSP页面,当那个页面打开时列表框中就显示从数据库中得到的记录,这些记录也很单一,全都是11位的手机号码!
      

  9.   

    我按照10楼的做已经从数据库中获得记录并赋给了List类型的对象,出存在SESSION中了并在控制台中有了输出。但却发生Caused by: java.lang.IllegalArgumentException: No name specified 这样的异常,列表框中也没有值,在JSP页面中的写法能够再详细清楚一点可以吗?顺便再补充一点:要在列表框中显示的值为数据库中表中的一列,全是11位的手机号码!望各位高手再帮帮忙啊,我在这先谢过了!