java - Spring Web MVC 返回未处理的 View

标签 java spring jsp spring-mvc jstl

我已经配置了一个 Spring 项目来返回基于 JSP/JSTL 的 View 。但模板返回时未处理,占位符未填充,但仍按定义保持 1:1。我错过了什么?

HomeController.java

@Controller
@RequestMapping("/")
public class HomeController {
    @RequestMapping("")
    public ModelAndView home() {
        String message = "Hello, home.";

        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.getModelMap().addAttribute("message", message);
        return modelAndView;
    }
}

/WEB-INF/views/index.jsp - 此模板完全按照此处显示的方式返回,无需解析,这意味着用户可以看到 ${message}而不是实际的消息。

<html>
<head>
<title>Home</title>
</head>
<body>
    <h1>Hello world! -</h1>
    ${message}
    <br />
</body>
</html>

/WEB-INF/web.xml - 我发现有些人将 jspservlet-mapping 放置到 /WEB-INF/views 但这也没有帮助。

<web-app>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/META-INF/spring/dispatcherServlet.xml</param-value>
        </init-param>
        <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>/META-INF/spring/applicationContext.xml</param-value>
    </context-param>

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

</web-app>

/META-INF/spring/dispatcherServlet.xml

<beans>
    <mvc:annotation-driven />

    <context:component-scan base-package="my.app.controller" />

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

最佳答案

我认为您错过了将 JSTL jar 添加到应用程序。

来自InternalResourceViewResolver的java文档:

The view class for all views generated by this resolver can be specified via {@link #setViewClass}. See {@link UrlBasedViewResolver}'s javadoc for details. The default is {@link InternalResourceView}, or {@link JstlView} if the JSTL API is present.

<小时/>

所以:

  • 如果您使用 maven,请将其添加到您的 maven 的依赖项

pom.xml

  <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>jstl</artifactId>
     <version>1.2</version>
  </dependency>
  • 否则下载JSTL jar ,并将其添加到您的网络库中。

关于java - Spring Web MVC 返回未处理的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316105/

相关文章:

java - MySQl 和 autoReconnect=true 仍然给我异常

java - Spring/Hibernate/appfuse 中的事务

java - 注销 Facebook Android SDK

java - 设计可以在运行时创建类实例的应用程序

java - 根据键值对比较两个 TreeMap

java获取文件路径

eclipse - 如何让 Eclipse JSP 表达式语言验证接受 JSP 2.2 EL 构造?

java - 检测递归的算法

spring - JPA : How to handle the entity mapping with two foreign keys and those two foreign together acts as a primary key

java - struts.xml 看不到我的图 block