2016-06-07 9 views
0

Ich erhalte folgenden Fehler und meine JSP wird nicht geladen.Nicht in der Lage, JSP aus Jersey zu zeigen: MessageBodyWriter nicht gefunden für Medientyp = text/html

[info] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
2016-06-07 13:04:16 INFO ReportController:242 - welcome page load called 
Jun 07, 2016 1:04:16 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo 
SEVERE: MessageBodyWriter not found for media type=text/html, 
type=class org.glassfish.jersey.server.mvc.Viewable, 
genericType=class org.glassfish.jersey.server.mvc.Viewable. 

Aber alle meine JSON url funktioniert gut.

Im Folgenden sind meine Code-Blöcke.

@Path("/reports") 
public class ReportController extends SpringBeanAutowiringSupport { 

    @POST 
    @Path("/submitReport") 
    @Produces(MediaType.APPLICATION_JSON) 
    @Consumes(MediaType.APPLICATION_JSON) 
    public ReportDTO submitReportCall (ReportDTO submitReportRequest) { 
     //..... 
    } 

    @GET 
    @Path("/test") 
    public Viewable index(@Context HttpServletRequest request) { 
     request.setAttribute("obj", new String("IT Works")); 
     LOGGER.info("welcome page load called"); 
     return new Viewable("/WEB-INF/jsp/main.jsp", null); 
    } 
} 

web.xml ist wie folgt.

<servlet> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.mytool.rest.service</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.provider.classnames</param-name> 
      <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
     </init-param> 
      <init-param> 
       <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name> 
       <param-value>/WEB-INF/jsp</param-value> 
      </init-param> 
      <init-param> 
       <param-name>jersey.config.server.provider.classnames</param-name> 
       <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value> 
      </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

==== EDIT ====

Modified web.xml mit Filter

<filter> 
     <filter-name>jersey-serlvet</filter-name> 
     <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.aol.compoundtool.rest.service</param-value> 
     </init-param> 
     <init-param> 
      <param-name>jersey.config.server.provider.classnames</param-name> 
      <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature, org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value> 
     </init-param> 
      <init-param> 
       <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name> 
       <param-value>/WEB-INF/jsp</param-value> 
      </init-param> 

    </filter> 
    <filter-mapping> 
     <filter-name>jersey-serlvet</filter-name> 
     <url-pattern>/aol/*</url-pattern> 
    </filter-mapping> 
+0

Sie können init-params nur verwenden, wenn ich denke. Wenn Sie mehrere Werte für einen einzelnen Parameternamen verwenden möchten, trennen Sie sie durch ein Komma oder Semikolon oder eine neue Zeile. Ich denke das Problem ist das JspMvcFeature wird nicht registriert –

+0

Auch mit Ihrer Sichtbar, sollten Sie nicht die 'WEB-INF/jsp' in den Pfad, der bereits in der web.xml konfiguriert ist. Ich denke du solltest einfach 'main' verwenden. Vielleicht "main.jsp", aber ich denke "main" sollte genug sein. –

+0

Ich habe das auch versucht, aber keinen Erfolg. Nun suchen Sie, wie Sie mehrere Param-Wert –

Antwort

2

i auf Jersey 2.22.2 das gleiche Problem hatte. Dies geschieht mit Hilfe Jetty 9ish

in meinem Fall war ich für diese spezifische Fehlermeldung

<dependency org="org.glassfish.jersey.ext" name="jersey-mvc-jsp" rev="2.22.2"/> 

fehlt. Ivy bekam auch keine anderen erforderlichen Abhängigkeiten.

Check https://jersey.java.net/documentation/2.22.2/user-guide.html#modules sub Ihre Version von Jersey in der URL für die richtige Version von docs

meine Filter def

<filter> 
     <filter-name>jersey-servlet</filter-name> 
     <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value> 
         com.foo.services.mobile.resource, 
         com.fasterxml.jackson.jaxrs.json 
      </param-value> 
     </init-param> 
     <init-param> 
       <param-name>jersey.config.server.provider.classnames</param-name> 
       <param-value> 
        org.glassfish.jersey.media.multipart.MultiPartFeature, 
        org.glassfish.jersey.server.mvc.jsp.JspMvcFeature 
       </param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
</filter> 
<filter-mapping> 
    <filter-name>jersey-servlet</filter-name> 
    <url-pattern>/rest/*</url-pattern> 
</filter-mapping> 

Multipart-Upload und JSP MVC diese sind meine Abhängigkeiten zu unterstützen. enter image description here aber erhalten Sie alles, was unter kompiliert für was auch immer Funktionen Sie verwenden. und testen Sie, ob Sie testen möchten.