5

JSP 中的正确 EL 表达式有什么新行或 HTML <br/>?这是我的代码不起作用并在文本中以 '\n' 呈现。

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

5 回答 5

13

既然要输出<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>
于 2009-12-15T15:57:05.227 回答
5

如果您想在浏览器中换行,则需要<br/>在文本中输入“”。然后浏览器将正确解释它。它不明白\n。

于 2009-12-15T15:57:11.997 回答
2

怎么样:

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

(即拆分值并将您想要的字符放在两者之间)?

于 2009-12-15T15:56:39.863 回答
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();

    }

}
于 2009-12-15T18:51:53.203 回答
-1

使用</br>而不是 /n

IE。在双引号“”内允许使用</br>

例如。

<af:outputText value="#{msg.TCW_SELECT_PART_ANALYSIS}</br>{msg.TCW_SELECT_PART_ANALYSIS2}"/> 
于 2021-06-30T04:45:01.493 回答