Spring-inicialização não encontrar páginas JSP em arquivo WAR

votos
6

Ao executar um projeto de Primavera-boot (java -jar /path/to/war.war) .jsp arquivos não são encontrados.

Métodos anotados com belo trabalho @ResponseBody. O resolvedor vista está chegando com o caminho correto para as páginas JSP, mas eles não são encontrados. Este projeto tem uma classe de configuração e nenhuma web.xml.

Classe de configuração:

@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@ComponentScan (basePackages = org.ghc.security.web)
class ScMain extends WebMvcConfigurerAdapter {


    // SpringBoot BootStrap...
    static void main (String[] args) {
        ApplicationContext ctx = SpringApplication.run (ScMain, args)

        System.out.println(Let's inspect the beans provided by Spring Boot:);

        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        beanNames.each { beanName ->
            System.out.println(beanName);
        }
    }


    @Bean
    InternalResourceViewResolver internalResourceViewResolver () {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver()
        viewResolver.setPrefix(/WEB-INF/jsp/)
        viewResolver.setSuffix(.jsp)
        viewResolver
    }
}

Controlador

@Controller
class Running {

    @RequestMapping (/alive)  // This works fine
    @ResponseBody
    String amIAlive () {
        ALIVE!
    }


    @RequestMapping (/alive/page)  // Path to page resolved, but file not found!
    ModelAndView amIAlivePage () {
        new ModelAndView(alivepage)
    }
}

Log de erro

2013/11/25 09: 08: 28,714 ERROR 1549 --- [tp1945397783-20] org.apache.jasper.servlet.JspServlet: PWC6117: arquivo % 2FUsers% 2Fnode42% 2FDevelopment% 2Fmock-security-ui% 2Fbuild% 2Flibs % 2Fmock-security-ui-2,06-SNAPSHOT.war% 2FWEB-INF% 2Fjsp% 2Falivepage.jsp não encontrado

O caminho para o arquivo .war na entrada do registro está correto e o caminho no arquivo de guerra (WEB-INF / jsp / alivepage.jsp) está correta. A resposta é a mesma, quer utilizando molhe ou Tomcat (o log acima foi a partir do molhe). I têm também não tentou usando o resolvedor vista, especificando um como acima, ou definindo a vista resolvedor através de propriedades. Estou completamente flummoxed como tudo realmente parece que está funcionando, exceto para esta pequeno detalhe. E o @ResponseBody método anotado no controlador funciona bem.

Se alguém tiver alguma sugestão eu certamente apreciar a entrada!

Publicado 25/11/2013 em 18:38
fonte usuário
Em outras línguas...                            


5 respostas

votos
3

Eu não acho que JSPs em arquivos executáveis são totalmente suportados ainda na Primavera de inicialização (que é na lista), então eu iria tentar e fazê-lo funcionar pela primeira vez com a) um WAR implantado, e / ou b) um arquivo explodiu (ou correr do IDE), ou correr a partir da fonte. Uma vez que está funcionando, você ainda pode ter que esperar para o total apoio JSP a ser adicionado (contribuições bem-vindos), mas pelo menos você vai saber que ele funciona. O erro que você está vendo no WAR implantado (nenhum mapeamento) sugere que há algo mais acontecendo. Note-se que há uma amostra JSP na Primavera de inicialização se você quiser algo para comparar - funciona até certo ponto (o JSP está resolvido e renderizado).

Editar: taglibs mola, JSTL e apoio EL parecem estar a funcionar no exemplo acima. Eu apenas atualizado para adicionar JSTL e testado a partir de IDE e como um WAR executável.

Respondeu 26/11/2013 em 08:49
fonte usuário

votos
2

Eu estava tendo um problema semelhante, causada pelo servlet padrão não sendo mapeado. Eu tinha que fazer isso na minha extends DelegatingWebMvcConfigurationclasse:

@Override
protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}
Respondeu 16/12/2013 em 02:07
fonte usuário

votos
0

Eu não sei o seu pom.xml mas isso parece semelhante a esta discussão

JSP arquivo não renderização no aplicativo web Primavera Bota

Tente adicionar lista de dependências para o seu pom por favor.

Respondeu 26/08/2014 em 09:11
fonte usuário

votos
17

Eu tive o mesmo problema e no meu caso isso aconteceu porque eu estava faltando uma biblioteca no classpath.

O Primavera Bota não incluem Jasper como padrão e, portanto, JSP prestação não funciona a menos que você incluir explicitamente a biblioteca:

Para Gradle:

compile("org.apache.tomcat.embed:tomcat-embed-jasper")

Para Maven:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
Respondeu 10/09/2014 em 14:26
fonte usuário

votos
2

Eu resolvi esse problema pequena correcção na definição Bean.

@Bean
    InternalResourceViewResolver internalResourceViewResolver () {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver()
        viewResolver.setPrefix("WEB-INF/jsp/")
        viewResolver.setSuffix(".jsp")
        return viewResolver;
    }
Respondeu 09/06/2016 em 00:56
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more