2014-10-09 3 views
1

Я застрял в основной операции JSP. Я хочу новую строку, поэтому я добавил \ n в конце, но это исключает меня. Если я удалить \ п все работает отличноJSP: передать специальные символы в response.setHeader?

Исключение

java.lang.IllegalArgumentException: Invalid LF not followed by whitespace 

Класс File

StringBuilder junitLog = new StringBuilder(); 
junitLog.append("The class that is being executed : " + description.getClassName() +"\n"); 
junitLog.append("Number of testcases to execute : " + description.testCount()+"\n"); 

    /** 
    * @return the junitLog 
    */ 
    public StringBuilder getJunitLog() { 
     return junitLog; 
    } 

    /** 
    * @param junitLog the junitLog to set 
    */ 
    public void setJunitLog(StringBuilder junitLog) { 
     this.junitLog = junitLog; 
    } 

JSP: -

response.setHeader("finalJUNITReport",""+ junitListener.getJunitLog()); 

ответ

0

I howeva преуспел в моем требовании. :) Как ясно сказано Сержем Баллестой.

Если вы поместите новую строку в значение заголовка, все, что будет следовать, будет считаться новым заголовком..

Итак, приведена логика, которую я применил на основе моего требования.

Ниже были мои изменения кода:

junitLog.append("The class that is being executed : " + description.getClassName() +"?"); 
junitLog.append("Number of testcases to execute : " + description.testCount()+"?"); 

Я добавил вопросительный знак в конце строки. Строка стала чем-то, как указано ниже.

The class that is being executed : testCreateHaulier? Number of testcases to execute : 39?  

Я передал строку из JSP с использованием ответа.SetHeader код, как показано ниже:

response.setHeader("finalJUNITReport",""+ junitListener.getJunitLog()); 

и в моем файле класса Java я сделал что-то вроде этого:

junitReportString=yc.getHeaderField("finalJUNITReport").toString(); 
System.out.println(junitReportString); 
junitReportString=junitReportString.replaceAll("\\?", "\n"); 
System.out.println("Report Details  ==============>"+junitReportString); 

Использование replaceAll я заменил все знаки вопроса на новую строку и мое требование было сделано.
Надеюсь, это поможет и другим. :)

1

попробуйте Base64, кодируя их перед установкой в ​​заголовках и Base64, декодируя их, когда вы хотите их прочитать.

1

До тех пор, пока вы думаете об этом в OO-способе, вы можете задаться вопросом, почему вы не можете поместить новую строку в свои заголовки.

Но как только вы думаете, что он будет передаваться по протоколу HTTP, становится очевидным: HTTP-сообщение (запрос или ответ) является не чем иным, как последовательной последовательностью байтов. Для HTTP, раздел заголовка приходит первым и состоит из линий так:

HEADER_NAME: header value 

Если поставить новую строку в значении заголовка, ничего, что бы следовало бы рассматривать в качестве нового заголовка. И если вы поместите две последовательные новые строки, которые означают конец раздела заголовка.

Все, что вы можете сделать, это использовать "\n ", потому что линия начинается с пробела, если предполагается, что это линия продолжения.

Вот причина сообщения об ошибке Invalid LF не следует пробел, и, надеюсь, он был там, потому что вы бы отправить неверный раздел заголовка, что может быть труднее обнаружить ...

Смежные вопросы