2

I declared UrlBasedViewResolver method in RestAppConfig to render jsp page.

@Bean
public UrlBasedViewResolver urlBasedViewResolver(){
    UrlBasedViewResolver res = new InternalResourceViewResolver(); //new UrlBasedViewResolver();//
    res.setOrder(10);
    res.setViewClass(JstlView.class);
    res.setPrefix("/views/templates/");
    res.setSuffix(".jsp");

    return res;
}

and delclared ModelAndView method in controller BaseController

@Configuration
@EnableWebMvc
@ComponentScan(basePackages={"kr.co.cdefi.base.restapp.controller"}
                , useDefaultFilters=false
                , includeFilters={@Filter(Controller.class)
                                ,  @Filter(ControllerAdvice.class)})
public class RestAppConfig extends WebMvcConfigurerAdapter{

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer
            .useJaf(true)
            .favorPathExtension(true)
            .favorParameter(false)
            .ignoreAcceptHeader(false)
            .defaultContentType(MediaType.APPLICATION_JSON)
            .mediaType("json", MediaType.APPLICATION_JSON)
            .mediaType("xml", MediaType.APPLICATION_XML);
    };

    @Bean
    public UrlBasedViewResolver urlBasedViewResolver(){
        UrlBasedViewResolver res = new InternalResourceViewResolver(); //new UrlBasedViewResolver();//
        res.setOrder(10);
        res.setViewClass(JstlView.class);
        res.setPrefix("/views/templates/");
        res.setSuffix(".jsp");

        return res;
    }
}

finally, I run tomcat8 server using Eclipse. But requested URI /home just responses this.

WARN o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/TheBigs/views/templates/index.jsp] in DispatcherServlet with name 'rest-app'

I opened deployment location ...\org.eclipse.wst.server.core\tmp1\wtpwebapps\TheBigs\views\templates\

... files exists. What is the problem? Is there anything I missing?

  • I added my controller code BaseController

    @Controller public class BaseController { Logger logger = LoggerFactory.getLogger(BaseController.class);

    @Autowired UserService userService;
    
    @RequestMapping(value="/home", method = RequestMethod.GET)
    public ModelAndView home(){
        logger.debug("home!");
        ModelAndView view = new ModelAndView();
        view.setViewName("index");
    
        return view;
    }
    @RequestMapping(value="/", method = RequestMethod.GET)
    public String index(Model model){
        logger.debug("index page!");
        model.addAttribute("message", "success");
        return "test";
    }
    

    }

There images are jsp files directory, and Web Deployment Assembly defined. JSP file directory

enter image description here

Minkyu Kim
  • 1,144
  • 3
  • 18
  • 43
  • 1
    This link explains with details how to use UrlBasedViewResolver: http://www.concretepage.com/spring/spring-mvc/spring-mvc-urlbasedviewresolver-example-java-configuration Be careful with the paths! – Anastasios Vlasopoulos Aug 28 '15 at 12:34
  • What is your request url get getting this error ? Did you add the the @RequestMapping for it? – Dinusha Aug 28 '15 at 12:38
  • @anvlasop Thank's for your comment. I read your link, but acutually don't know what am i missing. I located files on deploy path /views/css/templates, and prefix is same, too. Is threre something another care about setting ViewResolver bean ? – Minkyu Kim Aug 28 '15 at 12:40
  • @Dinusha I missed upload my controller code. Of course, logback outputs in controller. so I thought that problem is related on **ViewResolver**. I'll modify my post now. – Minkyu Kim Aug 28 '15 at 12:46
  • 1
    can you post your web.xml? – Deh Aug 28 '15 at 13:03
  • @Deh Yeah, It was uri-pattern problem. value **/*** changed to **/** then works. – Minkyu Kim Aug 28 '15 at 13:25

1 Answers1

2

Solved. It caused by servlet-mapping.

I changed url-pattern set to / from /*, then works.

Minkyu Kim
  • 1,144
  • 3
  • 18
  • 43