首页 > 解决方案 > 瓷砖在春季启动时无法解析模型和视图

问题描述

我在将我的 spring mvc 项目移动到 spring boot 时遇到了一个问题。我在我的 spring 项目中使用 apache tile 和 jsp 视图。我有一个控制器入口控制器,用于发送模型数据和视图。但是我的 viewresolver 没有找到合适的 jsp (entry.jsp)。我的 jspWEB-INF/jsp/abc/ayx/entry.jsp代码在 STS 嵌入式 tomcat 服务器上运行良好,但是当我将战争部署到 weblogic 14.1.1.0.0 时出现问题

下面是我的tileconfiguration.java

    @Configuration
    @ComponentScan(basePackages="org.abc.com.state")
    @PropertySource("classpath:views.properties")
    public class Tiles_Configuration implements WebMvcConfigurer {
    
        @Bean(name = "viewResolver")
        public UrlBasedViewResolver tilesViewResolver() {
            UrlBasedViewResolver tilesViewResolver = new UrlBasedViewResolver();
    
            tilesViewResolver.setViewClass(TilesView.class);
    
            return tilesViewResolver;
        }
    
        @Bean(name = "tilesConfigurer")
        public TilesConfigurer tilesConfigurer() {
            TilesConfigurer tilesConfigurer = new TilesConfigurer();
    
            String[] defs = { "/WEB-INF/Tiles/tiles-defs.xml" };
    
            tilesConfigurer.setDefinitions(defs);
    
            return tilesConfigurer;
        }
    @Bean
        public ResourceBundleViewResolver viewResolver() {
            ResourceBundleViewResolver resolver = new ResourceBundleViewResolver();
            resolver.setBasename("views");
            resolver.setOrder(1);
            return resolver;
        }
  

我的tiles-defs.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>
    <definition name="baseLayout" template="/WEB-INF/layout/baseLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/layout/header.jsp"/>
        <put-attribute name="body"   value=""/>
        <put-attribute name="footer"   value="/WEB-INF/layout/footer.jsp"/>
    </definition>
    <definition name="icmsbaseLayout" template="/WEB-INF/layout/baseLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/layout/student.jsp"/>
        <put-attribute name="body"   value=""/>
        <put-attribute name="footer"   value="/WEB-INF/layout/footer.jsp"/>
    </definition>
    <definition name="popupLayout" template="/WEB-INF/layout/popupLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/layout/popupheader.jsp"/>
        <put-attribute name="body"   value=""/>
        <put-attribute name="footer"   value=""/>
    </definition>

    <definition name="login" template="/login/login.jsp">
    </definition>
    <definition name="loginfailure" template="/login/loginfailure.jsp">
    </definition>
    <definition name="loginlocked" template="/login/loginlocked.jsp">
    </definition>
    <definition name="loginmaxsessions" template="/login/loginmaxsessions.jsp">
    </definition>
    <definition name="loginsessiontimeout" template="/login/loginsessiontimeout.jsp">
    </definition>
    <definition name="logout"  template="/login/logout.jsp"/>    
    <definition name="forgotpassword"  template="/login/forgotpasswordotp.jsp" />    
    <definition name="resetpassword"  template="/login/resetpassword.jsp"/>
    
    <definition name="entry" extends="baseLayout">
        <put-attribute name="title"  value="myproject"/>
        <put-attribute name="body"   value="/WEB-INF/jsp/abc/xyz/entry.jsp"/>-----this jsp giving null pointer exception
       
    </definition>
   

我的views.properties

entry.(class)=org.springframework.web.servlet.view.tiles3.TilesView
entry.url=entry

    

应用程序属性

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

 

项目结构

      myproject---
          |--src/main/resources
          |--src/main/java
          |--src/main/webapp
               |--WEB-INF
                   |--jsp
                      |--abc
                         |--xyz
                           |--entry.jsp
                   |--Tiles
                     |--tile-defs.xml

  

我的控制器方法

@GetMapping(value = "/entry.htm")
    protected ModelAndView entrycontroller(@ModelAttribute("entry") EntryFormBean entry, ModelMap model, HttpServletRequest request,HttpSession session)
{//model has some data
ModelAndView modelAndView = new ModelAndView("entry", model);
return modelAndView;------this is returning null pointer exception
}

标签: spring-bootjsp

解决方案


推荐阅读