【问题标题】:How do I immediately load another page in JSP/Spring?如何在 JSP/Spring 中立即加载另一个页面?
【发布时间】:2010-11-30 22:43:01
【问题描述】:

我在 JSP 方面不是很有经验。我有一个应用程序,它使用 Spring 框架进行搜索。我在 JSP 页面中显示这些结果。

当搜索只返回一个项目时,我想立即跳转到显示有关该项目的信息的另一个页面。

这在 JSP/Spring 中可行吗?我见过这样的标签:

<c:redirect url="/somePage.html"/>

这是来自另一个 JSP 文件。我想做的是(这是一段幼稚的代码)......

<c:when test="${cmd.totalResults = 1}">
    <c:redirect url="/loadItemInfo.html?id=someId"/>
</c:when>

提前感谢您的建议和帮助!您可以省略有关所涉及参数的任何内容;我能弄清楚那些。我所要求的只是让这一切发生。

  1. 页面加载。
  2. 页面看到只有一个结果。
  3. 页面转到该结果的页面,当用户单击该搜索结果时无论如何都会发生这种情况。这样可以节省一次点击。

【问题讨论】:

    标签: spring jsp


    【解决方案1】:

    您应该检查 Spring 控制器中的项目数逻辑而不是 jsp 文件。

    在你的 Spring 控制器中,你可能有这样的东西:

    if(items.size==1){
     //Query items[0] info
     return new ModelAndView("itemInfo",model);
    }
    else{
       return new ModelAndView("listOfItems",model);
    }
    

    【讨论】:

    • 这是一些很好的见解。这个项目实际上是我接手的(因此缺乏对 JSP 的了解),所以我将研究它是否到达控制器层,以便我可以按照您所说的进行检查。我很谨慎,因为我注意到之前的开发人员正在检查 ... 中 JSP 的结果编号,正如我在“示例代码”中所指出的那样。如果我能够从代码中做到这一点,我会将您的回复标记为答案。实际上:你是完全正确的。这是它应该做的方式,我相信我明白了。谢谢!
    • 是的,这个页面需要重写一下。目前,它只覆盖referenceDate(..),这意味着它只做GET。这种检查属于 POST 操作,例如 onSubmit(),是吗?
    【解决方案2】:

    您想暂时显示页面并重定向到另一个页面吗?您将无法使用 jsp 标记来执行此操作。你需要javascript。

    document.location.href = '/path'; 
    

    【讨论】:

    • 这看起来是一个很好的快速修复,但它没有奏效。这是我所做的,以防您仍然对尝试过的内容感到好奇:
    • @Danny 我给出了这个想法,以防您需要显示页面然后重定向。当然你必须将它添加到一个jsp标签中,只有当只有一个结果时才能执行它。如果您想显示页面 X 秒然后重定向,您应该将其包含在计时器中:stackoverflow.com/questions/460474/…
    • 啊,有道理。不需要在一定时间内显示页面;从用户的角度来看,我只希望他们单击​​“搜索”,然后查看单个项目的信息(如果它是唯一返回的项目)。您的意见可能对搜索者仍然有用,感谢您的跟进,因此为您 +1。
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多