2011-12-06 9 views
5

Sto creando un'applicazione Web con servizi Web RESTful utilizzando Spring MVC 3. I servizi Web verranno utilizzati dalle applicazioni, quindi non dovrebbero mai realmente risolvere eventuali richieste a una vista. C'è un modo per specificare nel contesto di servlet che nessuna richiesta dovrebbe risolversi in nessuna vista?Non risolvere la vista nell'applicazione RESTful

Al momento, ho:

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

che so tenta di risolvere qualsiasi richiesta di una vista corrispondentemente chiamato nella cartella jsp. Tuttavia, se rimuovo questo, l'applicazione tenta semplicemente di utilizzare un resolver di visualizzazione predefinito.

Il motivo per cui sono preoccupato per questo è che i miei registri delle applicazioni stanno per essere pieno dei seguenti messaggi (anche se funziona benissimo):

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 l'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' 

che immagino sia il migliore dei due mali. Non voglio disattivare il livello WARN di registrazione.

risposta

7

Provare con @ResponseStatus. Questo codice restituisce 204 senza contenuti e vista la risoluzione del problema saltato:

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

Se si desidera restituire i dati grezzi e semplicemente serializzare a JSON o XML, utilizzare @ResponseBody:

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

sto ancora tornando dati JSON all'applicazione richiedente. Questo non lo negherebbe? –

+0

@NicoHuysamen: scusate, ho frainteso * nessuna richiesta deve essere ripristinata in nessuna vista *, vedere il mio aggiornamento. –

+0

fantastico, grazie! –

Problemi correlati