Каково было бы правильное выражение EL в JSP, чтобы иметь новую строку или HTML <br/>
? Вот мой код, который не работает и представляет с '\n' в тексте.
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}\n#{msg.TCW_SELECT_PART_ANALYSIS2}"/>
Поскольку вы хотите вывести
, просто выполните:
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}<br />#{msg.TCW_SELECT_PART_ANALYSIS2}" escape="false" />
Атрибут escape = "false"
нужен, чтобы избежать
с экранированием HTML.
Вы даже можете отобразить два сообщения в отдельных тегах и поместить между ними
в виде обычного текста.
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}" />
<br />
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}" />
Если вы все еще используете JSF 1.1 или более раннюю версию, вам нужно обернуть простой HTML в
, например:
<f:verbatim><br /></f:verbatim>
Если вам нужен новый в браузере, то вам нужно ввести в текст «
». Тогда браузер правильно его интерпретирует. Он не понимает \ n.
Как насчет:
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}"/>
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}"/>
(т.е. разделить значение и поместить нужный символ между двумя)?
Напишите пользовательский функция, которая вызывает этот фрагмент кода:
import java.util.StringTokenizer;
public final class CRLFToHTML {
public String process(final String text) {
if (text == null) {
return null;
}
StringBuilder html = new StringBuilder();
StringTokenizer st = new StringTokenizer(text, "\r\n", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.equals("\n")) {
html.append("<br/>");
} else if (token.equals("\r")) {
// Do nothing
} else {
html.append(token);
}
}
return html.toString();
}
}