2011-12-06 11 views
5

Estoy construyendo una aplicación web con servicios web RESTful utilizando Spring MVC 3. Los servicios web serán utilizados por las aplicaciones, por lo que nunca se deben resolver realmente las solicitudes a una vista. ¿Hay alguna forma de especificar en el contexto del servlet que ninguna solicitud se debería resolver en ninguna vista?No resuelvo la vista en la aplicación RESTful

Por el momento, no tengo:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

que sé que trata de resolver cualquier solicitud para una vista correspondiente nombre en la carpeta jsp. Sin embargo, si elimino esto, la aplicación simplemente trata de usar una resolución de vista predeterminada.

La razón por la que estoy preocupado por esto es que mis registros de aplicación van a estar lleno de los siguientes mensajes (a pesar de que funciona bien):

SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/vouchd] threw exception [Circular view path [signup]: would dispatch back to the current handler URL [/vouchd/signup] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause 
javax.servlet.ServletException: Circular view path [signup]: would dispatch back to the current handler URL [/vouchd/signup] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 

o con el InternalViewResolver:

WARN [http-bio-8080-exec-4] (DispatcherServlet.java:1057) - No mapping found for HTTP request with URI [/app/WEB-INF/jsp/call.jsp] in DispatcherServlet with name 'DispatcherServlet' 

que supongo que es el mejor de los dos males. No quiero desactivar el registro del nivel WARN.

Respuesta

7

Probar con @ResponseStatus. Este código devuelve 204 sin contenido y vista la resolución de excluir:

@ResponseStatus(NO_CONTENT) 
void noView() { 
    //... 
} 

Si desea devolver los datos en bruto y simplemente serializarlo a JSON o XML, utilice @ResponseBody:

@ResponseBody 
MyPojo noView() { 
    return new MyPojo(); 
} 
+0

Todavía estoy devolviendo los datos JSON a la solicitud solicitante. ¿Esto no negaría eso? –

+0

@NicoHuysamen: lo siento, he entendido mal * no hay solicitudes deben reseller a ninguna vista *, ver mi actualización. –

+0

increíble, gracias! –

Cuestiones relacionadas