【问题标题】:Going from one view to another view in Spring, doesn't actually redirect - just adds the new view to the current view在 Spring 中从一个视图转到另一个视图,实际上并不重定向 - 只是将新视图添加到当前视图
【发布时间】:2015-07-28 06:28:34
【问题描述】:

所以,我有一个指向 index.jsp 的主页。这很好。在这个页面上有一个搜索按钮,本应将您带到 room-list.jsp,但它只是嵌入到 index.jsp 中,我不明白为什么。

我尝试过返回“redirect:/room-list”,但这似乎是在尝试转到另一个控制器而不是 jsp,如果这有意义的话?我太难了。这是正在发生的事情的屏幕截图,您可以看到有 2 个横幅,因为 room-list.jsp 被添加到 index.jsp 之上:http://imgur.com/fJ3BA67

这是我的控制器中的内容:

@RequestMapping("/home")
public String home() {
    System.out.println("in controller");

    return "index";
}

@RequestMapping(value = "/search", method = RequestMethod.POST)
public String showMessage2(@Valid SearchCmd searchCmd, Model model) {
    System.out.println("in search controller");

    return "room-list";
}

Web.xml http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

<display-name>Archetype Created Web Application</display-name>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>

调度程序-servlet.xml

 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="com.programcreek" />

<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

【问题讨论】:

  • 能否请您显示index.jsp 或至少显示有关搜索按钮的部分?

标签: java spring jsp spring-mvc servlets


【解决方案1】:

因为你正在使用:

RequestMethod.POST

尝试将其更改为:

RequestMethod.GET

你会被重定向到房间列表页面。

本教程可能会有所帮助:http://krams915.blogspot.com/2011/01/spring-mvc-3-hibernate-annotations.html

他正在使用

@RequestMapping(value = "/persons/edit", method = RequestMethod.GET)

先获取页面,然后他使用

@RequestMapping(value = "/persons/edit", method = RequestMethod.POST)

做生意。

【讨论】:

  • Hmmmm...将我的控制器部分更改为 Get 并在我的 jsp 中将 method="get" 添加到表单中,但由于某种原因似乎仍在期待 Post。
  • 那么你可以在从 POST 更改为 GET 后重定向到 list-room.jsp 吗?
  • 不。但问题实际上是一个javascript问题。在我的 javascript 中,它实际上是将表单更改为 POST。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多