Can not connect JAX-RS service to MVC template

后端 未结 4 385
抹茶落季
抹茶落季 2021-01-02 20:22

I\'m attempting to make use of JAX-RS\' (Jersey) MVC pattern. Attempts to reach http://localhost:8080/myproject/foos/test result in an error that reads:

jav         


        
相关标签:
4条回答
  • 2021-01-02 21:05

    I had this same error running under Jetty 9. The application ran fine using mvn clean jetty:run but had this error when packaged as a war and deployed under Jetty. This is the fix in web.xml that worked for me:

             <init-param>
                 <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
    -            <param-value>/WEB-INF/views/</param-value>
    +            <param-value>/WEB-INF/views</param-value>
             </init-param>
    

    Yep, that's it. So, hopefully this helps someone who stumbles across this. My config is basically the same as craig's, but had the extra slash.

    0 讨论(0)
  • 2021-01-02 21:11

    From initial inspection I think you want to put index.jsp and view.jsp directly in WEB-INF/jsp.

    0 讨论(0)
  • 2021-01-02 21:21

    Made the following changes:

    web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
    
        <welcome-file-list>
            <welcome-file>welcome.jsp</welcome-file>
        </welcome-file-list>
    
        <filter>
            <filter-name>jersey</filter-name>
            <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
            <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>controllers</param-value>
            </init-param>        
            <init-param>
                <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
                <param-value>/((WEB-INF/views))/.*</param-value>
            </init-param>
            <init-param>
                <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
                <param-value>/WEB-INF/views/</param-value>
            </init-param>
            <init-param>
                <param-name>com.sun.jersey.config.feature.Redirect</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
                <param-value>true</param-value>
            </init-param>        
        </filter>
        <filter-mapping>
            <filter-name>jersey</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </web-app>
    

    Resource:

    @Path("foos")
    public class FooResource {
    
        @GET
        @Produces(MediaType.TEXT_HTML)
        public Viewable index() {
    
            return new Viewable("/foos/index", this);
    
        }   
    
        @GET
        @Path("{id}")
        @Produces(MediaType.TEXT_HTML)
        public Viewable view(@PathParam("id") String id) {
    
            return new Viewable("/foos/view", id);
    
        } 
    
    }
    

    Views:

    • \welcome.jsp
    • \WEB-INF\views\foos\
      • index.jsp
      • view.jsp
    0 讨论(0)
  • 2021-01-02 21:23

    The name should be a fully qualified name like /index.jsp or /index.html.

    0 讨论(0)
提交回复
热议问题