如何在 gsp grails 文件上显示字符串新行



我在数据库中存储了一个字符串。当我保存并检索字符串时,我得到的结果如下:

这是我的新对象

测试多条生产线

-- 测试 1

-- 测试 2

-- 测试 3

这就是我在调用保存和索引方法时从 println 命令中得到的。

但是当我在屏幕上显示它时。它显示为:

这是我的对象 测试多行 -- 测试 1 -- 测试 2 -- 测试 3

已经尝试像下面这样显示它:

${adviceInstance.advice?.encodeAsHTML()}

但还是一样。

我是否需要将 替换为
或类似的东西?有没有更简单的方法可以正确显示它?

常见问题有多种解决方案

1> 可能是你用 <br> 替换

因此,无论是在您的控制器/服务中,还是在您喜欢的 GSP 中:

${adviceInstance.advice?.replace('n','<br>')}

2>在只读文本区域中显示内容

 <g:textArea name="something" readonly="true">
  ${adviceInstance.advice}
 </g:textArea>

3> 使用<pre>标签

<pre>
 ${adviceInstance.advice}
</pre>

4> 使用css空格 http://www.w3schools.com/cssref/pr_text_white-space.asp:

<div class="space">
</div>
//css code:
.space {
 white-space:pre
}

如果您对这些字段的存储有严格的配置,还要注意,当您通过表单提交它时,还有其他元素我没有深入研究它实际上是什么,它实际上可能是返回的回车或\r,无论如何在下面的评论中解释。关于设置每次收到元素时修剪元素的设置器的良好规则。即:

Class Advice {
 String advice
  static constraints = {
     advice(nullable:false, minSize:1, maxSize:255)
  }
  /*
   * In this scenario with a a maxSize value, ensure you 
   * set your own setter to trim any hidden r
   * that may be posted back as part of the form request
   * by end user. Trust me I got to know the hard way.
   */
  void setAdvice(String adv) {
    advice=adv.trim()
  } 
}
${raw(adviceInstance.advice?.encodeAsHTML().replace("n", "<br>"))}

这就是我解决问题的方式。

首先,确保字符串包含 以表示换行符。例如:

String test = "This is first line. n This is second line";

然后在 gsp 页面使用中:

${raw(test?.replace("n", "<br>"))}

输出将如下所示:

This is first line.
This is second line.

最新更新