我现在采用这个模式,在choice.jsp页面有几个表单,选择查询条件,然后提交给一个servlet进行处理,servlet查询到的数据保存在JavaBean中,然后由在servlet中用request.getRequestDispatcher("showRecord.jsp")请求的showRecord.jsp页面负责显示数据库查询的结果。
现在我有一个想法,就是choice.jsp页面提交后,查询的结果显示在choice.jsp页面,并且choice.jsp原有的表单仍然存在。现在我遇到的问题是,将servlet中的request.getRequestDispatcher("showRecord.jsp")改为request.getRequestDispatcher("choice.jsp")后,显示结果是初来了,但是choice.jsp页面上原有的表单都看不到了。
总结起来,就是在同一个页面显示查询条件和查询结果,请问这个问题如何解决呢~~

解决方案 »

  1.   

    如果用简单的jsp+servlet的话,估计做不到楼主的要求,楼主必须把页面原来的数据存到request里面,或者用隐藏控件把这些值和表单一起提交,在choice.jsp中要做取隐藏表单值的处理。如果是struts1的话,actionForm会保持到request里面,除非是redirect转向。struts2里面没有actoinForm,不知道怎么可以把请求前页面的值保留。楼下的麻烦指点,谢谢。
      

  2.   

    有没有类似html中的frame框架之类的东西把choice.jsp划分成上下2个部分
      

  3.   

    建议可以把查询结果放到另一个BEAN里
      

  4.   

    用Ajax实现啊。
    chois.jsp页面下面放一个<div id="resutl"></div>,查询后把结果页包含到该div里面,document.getElementById('result').innerHTML = xmlHttp.responseText。
      

  5.   

    哎,刚把这个jsp+servlet摸清楚了个大概,又要用到ajax了,没办法,看书吧~~~
      

  6.   

    frameset就可以,我刚完成的一个系统就是用frameset来划分的,或者用Struts的tiles来做也行
      

  7.   

    其实很简单,加一个页面参数就可以了,转发的时候带上参数,然后choice.jsp判断参数,有参数就显示结果加表单,没参数就是显示表单就可以了
      

  8.   

    如果用struts1或2都可以很容易实现,servlet就不好做了
      

  9.   

    there is three method:
    NO.1: use the ajax,this is a popular and better style that I also you do .
    NO.2: use the statement "if ....else...." so you can judge wether the content is neccessary,simply.
    NO.3: when the server respones the request,you can load the content repeat.
      

  10.   

    麽不用session就行了  进行判断null 最简单话!
      

  11.   

    用c标签判断一下,如果传过来的查询数据集存在,就用er表达式读一下不就可以了?
    表单还是原来的表单。不存在不显示的问题啊/.
      

  12.   

    lz不妨将choice.jsp用frame分成左右两边,提交在左边,显示在右边试试,个人意见,仅供参考,呵呵
      

  13.   


    跳转回来会刷新页面,所以原来的数据就不存在了,
      可以直接把查询条件存入sessio里,返回页面的时候判断一下不就行了吗?、
      

  14.   

    处理之前的结果就直接用EL表达式获取表单,能直接取出来
    处理后的结果先用JSTL标签或者Struts标签进行判断,如果有返回true 则显示出来
    如果没有返回false 则自动跳进Setvlet里去处理或者跳到对应的Action里处理在来显示
      

  15.   

    在choice页面适当的位置用if...else...来判断你定义的一个参数,如果这个参数为空,那么就只是显示你选择,如果不为空就把你要显示的javabean的内容显示在里面。参数需要你在servlet的dispatcher中传递到choice页面中。这样就可以了啊……
    像你的这种写法,他肯定是永远是保持不变的啊……
      

  16.   

    request.getRequestDispatcher的时候,把查询条件用request.setAttribute传递过去,然后在页面上得到这些查询条件,控制表单的显示效果。
      

  17.   

    用heibernate框架一切都可以搞定,heibernate框架的功能非常强大,其中针对用户查询的地方,它提供了一组固定的查询代码,,只要写下你的查询条件就可以了,heibernate会自动帮你进行查询操作,如果楼主不知道的话,我可以给源代码
      

  18.   

    首先第一个JSP页面处理下,加点JAVA代码判断要不要显示结果。
    第二步,把查询条件传入SERLET后,同时request.setAttbute出来,也把结果映射出来。。
    最后JSP采用ONload事件,给你的INPUT框赋初值(根据SERLET映射出来的值)。
      

  19.   

    你那样做当然会将原来表单中的数据覆盖掉,因为你用的是同一个BEAN如果你需要不将原来的数据覆盖掉,你在此次查询的过程中必须有两个操作,第一个是将原来的数据再重新查一遍,其次就是根据条件查询出新的数据放一个新的BEAN中,页面要做的事情就是创建两个表单用于存储数据,第一个就是存储你第一次查询的数据,第二个就是存储你查询后的数据
    但是我感觉你没哪个必要将原来的数据保留(个人意见)
      

  20.   

    要么用ajax实现,要么用struts+tiles!
      

  21.   

    楼主。。你可以在页面进行验证一个结果。要是这个结果不为空的话就显示下面的查询结果不就行了么?
    比如说:<form><%
    if(参数不为空)
    {
        查询结果。
    }
    >%
      

  22.   

    ajax  吧 用 ajax 
      

  23.   

    问题已解决,最终采用ajax+servlet+JavaBean,分少了点,就算意思一下吧,谢谢各位的意见~~再次感谢