2009-12-15 64 views
5

什么是正确的在JSP表达式中有一个新的行或HTML的<br/>? 这里是我的代码,不工作,并在文本中使用'\ n'呈现。如何在JSP的表达式语言中添加“新行”?

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

你可能想使用
kgiannakakis 2009-12-15 15:58:02

+0

我添加了“JSF”标签,从 Bozho 2009-12-15 15:58:59

+0

@Bozho:这是Oracle ADF的面孔,所以你是对的。 – BalusC 2009-12-15 19:20:16

回答

12

既然你想输出<br />,只是做:

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

属性escape="false"有避免<br />被HTML转义。

你甚至可以显示不同的标签的两个消息,并把<br />它们之间的纯文本。

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

如果你仍然对JSF 1.1或以上,那么你需要用普通的HTML中<f:verbatim>,如:

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

我在哪里放这些 Pavel 2018-02-07 01:14:54

2

如何:

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

(即拆分值,并将这两个之间你想要的字符)?

4

如果你想在浏览器的新线,那么你需要把“<br/>”。浏览器会正确解释它。它不了解\ n。

+0

这是最好的答案! – Pavel 2018-02-07 01:10:44

1

编写调用这段代码的自定义函数:

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

这已经存在于JSTL'fn:replace'的味道中。此外,如果您在Boomeho指出的'UIOutput'中使用'escape =“false”',那也不需要。 – BalusC 2009-12-15 18:56:03

相关问题