如何在同一个提交的页面中显示JSP页面的结果?

时间:2012-04-30 13:13:59

标签: jsp struts

我正在使用struts 1.3.8。在JSP中我有一些搜索工具。一旦用户按下搜索按钮,结果将以记录的形式出现 如何在搜索按钮下的同一搜索页面中显示结果记录? 请尽快回复.. 在此先感谢您 问候,
Laxman Chowdary

2 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 使表单自我提交,并生成具有相同搜索表单的页面,预​​先填写用户提交的内容,以及表单后的搜索结果。这是典型的“Web 1.0”方式,而Struts表单字段非常适合这项任务。
  2. 使用JavaScript在提交表单时向服务器发送AJAX请求,并使服务器生成仅包含搜索结果的部分页面。在AJAX响应处理程序中,将搜索结果插入到页面的DOM树中。服务器也可以使用原始搜索结果(即不是HTML格式)回答,例如使用JSON,然后JavaScript响应处理程序将遍历结果并动态地在DOM中创建适当的HTML元素。
  3. 编辑:

    详细说明第一种方法:让两个动作(showSearchFormexecuteSearch)都使用相同的ActionForm(包含搜索表单字段)。

    第一个操作只是使用默认搜索值填充表单,并调度到显示表单和结果的JSP。由于没有显示结果,它只显示搜索表单。

    第二个操作验证表单,执行搜索,将搜索结果存储到请求属性或直接存储到ActionForm中,然后调度到与第一个操作相同的JSP。这次,JSP将找到要显示的结果,并将显示它们。

答案 1 :(得分:0)

使用Ajax。

如果我使用jQuery

jQuery.ajax(
    url: getSomething, 
    datatype: "JSON",
    success:function(data){
     //parse and call add new records in the table
 });

或者

再次使用Ajax,在struts中说你将检索到的记录放在会话中。

然后还有另一个jsp,它具有逻辑或读取session属性并创建一个html表,只返回该页面。由于数据已经在会话中,因此将填充jsp。所以你的ajax调用看起来像:

jQuery.ajax(
        url: getSomething, 
        success:function(data){
         jQuery('#IdOfElementWhereTheHTMLTableNeedsToBeAdded').append(data);
     });