Содержимое ответа Java возвращается вместо <или> <> - PullRequest
2 голосов
/ 22 февраля 2010

У меня есть небольшая проблема: я пишу в ответ содержимое файла и возвращаю его клиенту как ответ ajax.
Но происходит замена html: от > до &gt; и т. Д. *
Что я должен сделать, чтобы отключить эту замену?

res.setHeader( "Cache-Control", "must-revalidate, post-check=0, pre-check=0" );
res.setHeader( "Pragma", "public" );
res.setContentType( "text/html" );

ТИА

обновление

//    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() );
}

я смотрел buf.toString() через отладчик. там все нормально замена идет дальше. но где ...

Ответы [ 3 ]

2 голосов
/ 22 февраля 2010

Специальные символы HTML экранированы в Объекты HTML .

Если вы уверены , что это произошло сразу после того, как вы записали его в ответ и непосредственно перед тем, как данные ответа поступят на клиент, тогда, возможно, в цепочке есть фильтр, который экранировал объекты HTML некоторая причина. Проверьте заявленные фильтры в web.xml и при необходимости настройте url-pattern.

0 голосов
/ 22 февраля 2010

Попробуйте использовать приведенный ниже фрагмент:

res.setContentType("text/html; charset=UTF-8");

Пожалуйста, убедитесь, что в вашей базе данных также установлена ​​кодировка UTF-8, если вы ее используете.

Если это не помогло, прочитайте статью .

0 голосов
/ 22 февраля 2010

Обычно это происходит, когда HTML-символы (

<,>, "

среди других) избегают. Попробуйте установить escape на false или подобное. Не удается найти документацию API для "com.ibm.useful.http.PostData"

...