el表达式中换行_字符串-如何使用JSP和JSTL替换换行符?

字符串-如何使用JSP和JSTL替换换行符?

我有一个传递给我的JSP页面的Bean对象的列表,其中之一是注释字段。 该字段可能包含换行符,我想使用JSTL将其替换为分号,以便可以在文本输入中显示该字段。 我找到了一种解决方案,但这不是很好。 我将在下面发布作为一种可能性。

14个解决方案

54 votes

这是我找到的解决方案。 但是,它似乎并不十分优雅:

${fn:replace(item.comments, newLineChar, "; ")}

parkerfath answered 2020-07-14T03:17:16Z

19 votes

只需使用fn:replace()函数将\n替换为;。

${fn:replace(data, '\n', ';')}

如果您使用的是Apache的EL实现而不是Oracle的EL参考实现(即,当您使用Tomcat,TomEE,JBoss等代替GlassFish,Payara,WildFly,WebSphere等)时,则需要重新转义 反斜杠。

${fn:replace(data, '\\n', ';')}

BalusC answered 2020-07-14T03:17:40Z

14 votes

这类似于已接受的答案(因为它使用Java表示换行符而不是EL),但是在这里元素用于设置属性:

" />

${fn:replace(myAddress, newline, "
")}

以下代码段也可以使用,但是元素的第二行不能缩进(可能看起来更难看):

${fn:replace(myAddress, newline, "
")}

andy answered 2020-07-14T03:18:05Z

7 votes

此解决方案比您自己的直接设置pagecontext属性的解决方案更为优雅。 您应该为此使用${fn:replace(data, "\n", ";")}标记:

${fn:replace(data, newLine, "; ")}

顺便说一句:${fn:replace(data, "\n", ";")}不起作用。

bousch answered 2020-07-14T03:18:29Z

4 votes

这对我不起作用:

${fn:replace(data, newLine, "; ")}

这样做:

${fn:replace(item.comments, newLineChar, "; ")}

answered 2020-07-14T03:18:54Z

4 votes

您可以创建自己的JSP函数。[http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags6.html]

这大概是您需要做的。

创建标签库描述符文件

/双人床/meta-inf/是否.泰兰德

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">

1.0

sf

http://www.stackoverflow.com

clean

com.stackoverflow.web.tag.function.TagUtils

java.lang.String clean(java.lang.String)

为函数逻辑创建一个Java类。

com.stackoverflow.web.tag.function.TagUtils

package com.stackoverflow.web.tag.function;

import javax.servlet.jsp.tagext.TagSupport;

public class TagUtils extends TagSupport {

public static String clean(String comment) {

return comment.replaceAll("\n", "; ");

}

}

在JSP中,您可以通过以下方式访问函数。

${sf:clean(item.comments)}

Geekygecko answered 2020-07-14T03:19:40Z

4 votes

如果您真正需要的是\ n符号,则可以使用此处的建议:

${fn:replace(text, "

", "
")}

要么

这包括字符串文字中的新行。

Leonid answered 2020-07-14T03:20:09Z

2 votes

您应该可以使用fn:replace做到这一点。

您将需要使用以下声明将标记库导入JSP:

然后,您可以使用以下表达式将$ {data}中的换行符替换为分号:

${fn:replace(data, "\n", ";")}

该文档在这方面不是很好,我还没有机会对其进行测试。

Brian Matthews answered 2020-07-14T03:20:42Z

2 votes

这是针对JSP EL的有效解决方案:

"${fn:split(string1, Character.valueOf(10))}"

Thomas Meyer answered 2020-07-14T03:21:02Z

1 votes

\ n不代表EL表达式中的换行符。

该解决方案可以将pageContext属性设置为换行符,然后将其与JSTL的fn:replace函数一起使用。

但是,我更喜欢使用Jakarta字符串标签库来解决此问题:

...

Text containing newlines

...

您可以为newlineToken使用任何内容。 “〜n”不太可能出现在我要进行替换的文字中,因此对我来说这是一个合理的选择。

Matt Hurne answered 2020-07-14T03:21:36Z

1 votes

更容易:

${your_Var_to_replaced}

brunohop answered 2020-07-14T03:21:56Z

0 votes

您可以编写自己的JSP函数进行替换。

这意味着您最终将得到以下结果:

...

${ns:replace(data)}

其中ns是您定义的名称空间前缀,而replace是您的JSP函数。

这些函数很容易实现(它们只是一个静态方法),尽管目前我似乎找不到很好的参考来编写这些函数。

Walter Rumsby answered 2020-07-14T03:22:29Z

0 votes

在设置var的值中,在双引号之间按Enter。

$ {fn:replace(data,newLineChar,“;”)}

answered 2020-07-14T03:22:54Z

0 votes

作为记录,我在解决此问题时遇到了这篇文章:

JSTL中的多行字符串被添加为textarea的title属性。 然后,JavaScript将其添加为textarea的默认文本。 为了使文本清晰可见,值必须等于标题...但是失败了,因为许多文本编辑器将\ r \ n替换为\ n。 因此,跟随者将摆脱不必要的\ r:

wheresrhys answered 2020-07-14T03:23:18Z

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值