Il contenuto di risposta Java restituisce invece di & lt; & gt;
-
22-09-2019 - |
Domanda
Ho un piccolo problema: sto scrivendo per rispondere al contenuto del file e lo restituisco al client come risposta AJAX.
Ma si verifica una sostituzione HTML: di >
a >
eccetera...
Cosa devo fare per eliminare questa sostituzione?
res.setHeader( "Cache-Control", "must-revalidate, post-check=0, pre-check=0" );
res.setHeader( "Pragma", "public" );
res.setContentType( "text/html" );
Tia
aggiornare
// import com.ibm.useful.http.PostData;
PostData pd = new PostData( req );
final FileData data;
try {
data = pd.getFileData( "sqlFile" );
ByteArrayOutputStream buf = new ByteArrayOutputStream();
for ( byte b : data.getByteData() ) {
buf.write( b );
}
res.getWriter().print( buf.toString() );
}
ho guardato buf.toString()
attraverso il debugger. Va bene lì. La sostituzione va oltre. ma dove...
Soluzione
I personaggi speciali HTML sono stati sfuggiti Entità HTML.
Se sei sicuro Che questo è successo subito dopo averlo scritto alla risposta e proprio prima che i dati di risposta arrivino al cliente, allora c'è forse un filtro nella catena che è sfuggito alle entità HTML per qualche motivo. Controlla i filtri dichiarati in web.xml
e regola il url-pattern
se necessario.
Altri suggerimenti
Questo di solito accade quando i caratteri HTML (
<, > , "
Tra gli altri) vengono sfuggiti. Prova a impostare la fuga in falso o simile. Impossibile trovare la documentazione API per "com.ibm.useful.http.postdata"
Prova a usare sotto lo snippet:
res.setContentType("text/html; charset=UTF-8");
Assicurati che il database sia impostato anche su codifica UTF-8, se ne usi uno.
Se questo non si risolve, leggi questo articolo.