【问题标题】:Spring return String but must return htmlSpring返回字符串但必须返回html
【发布时间】:2019-03-23 02:39:58
【问题描述】:
@RestController
public class ControllerCustomer {
    @RequestMapping("customer")
    public String customer(){
        return "customer";
    }

在模板文件夹中文件customer.html

【问题讨论】:

  • 请发布您的项目结构。
  • 使用@Controller@RestController 将按原样返回响应。
  • @RestController 是罪魁祸首。 :)
  • Pa tison,你告诉我你要使用jsp页面,这就是我添加新答案的原因

标签: java spring spring-mvc spring-boot


【解决方案1】:

如果你想使用jsp然后创建一个文件夹

main -> 
      webapp -> 
        WEB-INF-> 
          views

将您的 jsp 页面放入 views 文件夹中。 现在在你的 application.properties 添加这些行

spring.mvc.view.prefix:/WEB-INF/views/
spring.mvc.view.suffix:.jsp

现在在你的pom.xml 添加这些依赖

<dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

【讨论】:

    【解决方案2】:

    你配置了 Spring MVC 了吗?

    通过在spring配置文件中添加这个来使用Spring MVC InternalResourceViewResolver:

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

    并且只在控制器中返回“客户”

    在注释驱动的配置中,应在扩展 WebMvcConfigurerAdapter 的配置类中设置 InternalResourceViewResolver,如下所示:

    @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".html");
        return resolver;
    }
    

    这两行将发挥所有作用。

      resolver.setPrefix("/WEB-INF/pages/");
      resolver.setSuffix(".html");
    

    它将客户设置为customer.html,您的页面应位于/WEB-INF/pages/中。

    如果您使用的是 Spring boot,请在 application.properties 中添加这两个属性,

      spring.mvc.view.prefix=/view/
      spring.mvc.view.suffix=.jsp
    

    同时添加这两个依赖。

     <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
     </dependency>
    
     <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    </dependency>
    

    名为 customer.html 的视图放置在 src/main/resources/templates 中。

    按照这个答案来完成理解。 By default, where does Spring Boot expect views to be stored?

    请按照这些路线图提出一个好问题,不要错过细节。 https://stackoverflow.com/help/how-to-ask 希望对您有所帮助,祝您学习愉快。

    【讨论】:

    • 也许你有例子?
    • WebMvcConfigurerAdapter 已弃用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2017-03-12
    • 2021-07-29
    • 2014-01-06
    • 2017-04-17
    • 2013-12-04
    相关资源
    最近更新 更多