2012-01-21 26 views
15

Desidero visualizzare un testo semplice su una pagina e come tale voglio restituire Content-Type come text/plain.Spring MVC 3 Return Content-Type: text/plain

Utilizzando il codice di seguito, vedo il testo in chiaro sulla pagina, tuttavia il ritorno Content-Type è ancora text/html.

Come posso risolvere questo?

NOTA: Sto usando Tiles con Spring MVC. Il "m.health" restituito punta a una tile def che mappa ad un health.jsp che contiene solo la riga 1 sotto.

UPDATE NOTA: non ho alcun controllo sulle Content-Type o Accept valori nella richiesta HTTP Header. Voglio che la mia risposta per tornare text/plain non importa che tipo di richiesta arriva

Controller:.

@RequestMapping(value = "/m/health", method = RequestMethod.GET, headers = "Accept=*") 
public String runHealthCheck(HttpServletResponse response, HttpServletRequest request, Model model) throws Exception { 
    model = executeCheck(request, response, TEMPLATE, false, model); 
    model.addAttribute("accept", "text/plain"); 
    response.setContentType("text/plain"); 
    response.setCharacterEncoding("UTF-8"); 
    return "m.health"; 
} 

JSP:

$ {status}

risposta

7

Si potrebbe provare per impostare il valore produces dell'annotazione @RequestMapping con text/plain. La documentazione Spring lo elenca come sample.

+1

non ho alcun controllo su ciò che 'Content-Type' si trova nel' request' e produce non corrisponderà se il tipo di richiesta non è quello che ho impostato in esso. Fondamentalmente voglio restituire 'text/plain ', indipendentemente dal tipo di richiesta. – Ali

46

Dovrebbe funzionare se annotare il metodo in aggiunta con @ResponseBody:

@RequestMapping(value = "/", 
       method = RequestMethod.GET) 
@ResponseBody 
public String plaintext(HttpServletResponse response) { 
    response.setContentType("text/plain"); 
    response.setCharacterEncoding("UTF-8"); 
    return "TEXT"; 
} 
+6

Per chiunque visiti questa domanda, Markus ha aggiunto la sua risposta dopo che Ali ha accettato, ma questo è l'approccio corretto quando si usano le annotazioni. È semplice e funziona bene. –

+0

Questo dovrebbe essere accettato come risposta corretta. –

+8

Non funziona. Se usi @ResponseBody, Spring riscriverà il tipo di contenuto per "application/json" –

Problemi correlati