Ho scritto codice che genera file Excel utilizzando REST JAX-RS e ho confermato che il file Excel generato si trova nella directory del server GlassFish.Come impostare l'intestazione della risposta in JAX-RS in modo che l'utente veda il popup di download per Excel?
Ma il mio obiettivo è quando l'utente clicca sul pulsante (che generano Excel .xls), voglio scaricare comparsa per mostrare che chiede all'utente se salvare o aprire il file .xls, proprio come qualsiasi altro servizio web che fa per il download di qualsiasi tipo di file.
Secondo la mia ricerca, il passo è:
generare Excel .xls (FATTO)
scrivere l'excel per lo streaming
nel file di JAX-RS, impostare la risposta intestazione per qualcosa del tipo,
String fileName = "Blah_Report.xls"; response.setHeader ("Content-Disposition", "attachment; filename =" + fileName);
La mia domanda è che sto facendo tutto questo nel file JAX-RS e non ho l'oggetto HttpServletResponse disponibile.
Secondo la risposta da Add Response Header to JAX-RS Webservice
Egli dice:
si può iniettare un riferimento al reale HttpServletResponse tramite il annotazioni @Context nel webservice e utilizzare AddHeader(), ecc per aggiungere l'intestazione .
Non riesco davvero a capire che cosa esattamente significa senza codice di esempio ..
@GarretWilson Perché no? Cosa ti confonde? È un'intestazione semplice. – Tarlog
Poiché un singleton 'MyResource' avrebbe' myMethod() 'chiamato da più thread contemporaneamente. Ogni thread ha una diversa istanza di 'HttpServletResponse', tuttavia la variabile membro singleton' anotherServletResponse' può contenere solo un singolo valore alla volta. L'unico modo in cui ciò funzionerebbe è se "anotherServletResponse' è stato iniettato con un proxy thread-safe che utilizza un thread locale o alcuni di essi per determinare l'effettiva istanza' HttpServletResponse' del thread corrente. –
Per quanto ricordo HttpServletRequestWrapper è stato iniettato; la sua implementazione prende il vero HttpServletRequest dal TLS. Quindi la tua ipotesi è più o meno corretta. – Tarlog