Como colocar “nova linha” em JSP Expression Language?
Pergunta
Qual seria a expressão EL direito em JSP para ter uma nova linha ou <br/>
do HTML?
Aqui está o meu código que não funciona e render com '\ n' no texto.
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}\n#{msg.TCW_SELECT_PART_ANALYSIS2}"/>
Solução
Uma vez que você quiser <br />
saída, basta fazer:
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}<br />#{msg.TCW_SELECT_PART_ANALYSIS2}" escape="false" />
O escape="false"
atributo está lá para evitar o <br />
sendo escapou-HTML.
Você pode até mesmo exibir as duas mensagens em separar as etiquetas e colocar o <br />
em texto simples entre eles.
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}" />
<br />
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}" />
Se você ainda está em JSF 1.1 ou mais, então você precisa para embrulhar HTML simples em <f:verbatim>
como:
<f:verbatim><br /></f:verbatim>
Outras dicas
Se você quer uma nova linha no navegador, então você precisa colocar "<br/>
" no texto. O navegador irá então interpretá-la corretamente. Ele não entende \ n.
Como sobre: ??
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}"/>
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}"/>
(i. Dividir o valor e colocar o caractere desejado entre os dois)?
Escrever uma função personalizada que chama este pedaço de código:
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();
}
}