2009-12-15 9 views
5

Jakie byłoby właściwe wyrażenie EL w JSP, aby mieć nową linię lub kod HTML <br/>? Oto mój kod, który nie działa i renderuje za pomocą "\ n" w tekście.Jak umieścić "nową linię" w języku wyrażania JSP?

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}\n#{msg.TCW_SELECT_PART_ANALYSIS2}"/> 
+0

prawdopodobnie chcesz użyć
kgiannakakis

+0

dodałem „JSF” tag, przyjmując go z Bozho

+0

@Bozho: to twarze ADF Oracle, więc masz rację. – BalusC

Odpowiedz

12

Ponieważ chcesz wyjściu <br />, po prostu zrobić:

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}<br />#{msg.TCW_SELECT_PART_ANALYSIS2}" escape="false" /> 

Atrybut escape="false" jest tam, aby uniknąć ich HTML-uciekł <br />.

Możesz wyświetlić dwie wiadomości w osobnych znacznikach i umieścić między nimi tekst <br />.

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}" /> 
<br /> 
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}" /> 

Jeśli wciąż na JSF 1.1 lub starszej, to trzeba owinąć zwykły HTML w <f:verbatim> jak:

<f:verbatim><br /></f:verbatim> 
+0

gdzie umieścić te Pavel

2

Jak o:

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}"/> 
<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS2}"/> 

(tj podzielić wartość i umieścić znak, który ma między nimi)?

4

Jeśli chcesz nową linię w przeglądarce, a następnie należy umieścić "<br/>" w tekście. Przeglądarka zinterpretuje to poprawnie. Nie rozumie \ n.

+0

To jest najlepsza odpowiedź! – Pavel

1

Napisz funkcję niestandardową, która wywołuje ten kawałek kodu:

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

    } 

} 
+0

To już istnieje w smaku JSTL 'fn: replace'. Poza tym nie jest to konieczne, jeśli użyjesz 'escape =" false "' w 'UIOutput' wskazanym przez Bozho. – BalusC