如何在gsp grails文件中显示String新行?

Igo*_*gor 0 grails

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

这是我的新对象

测试多条线

- 测试1

- 测试2

- 测试3

这就是我在调用save和index方法时从println命令获得的内容.

但是当我在屏幕上显示它时.它显示如下:

这是我的目标测试多行 - 测试1 - 测试2 - 测试3

已经尝试过显示如下:

${adviceInstance.advice?.encodeAsHTML()}
Run Code Online (Sandbox Code Playgroud)

但仍然是一样的.

我是否需要替换\n
或类似的东西?有没有更简单的方法来正确显示它?

Vin*_*yon 5

常见问题有多种解决方案

1>你可以替换\n <br>

所以要么在你的控制器/服务中,要么你喜欢在gsp中:

${adviceInstance.advice?.replace('\n','<br>')}
Run Code Online (Sandbox Code Playgroud)

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

 <g:textArea name="something" readonly="true">
  ${adviceInstance.advice}
 </g:textArea>
Run Code Online (Sandbox Code Playgroud)

3>使用<pre>标签

<pre>
 ${adviceInstance.advice}
</pre>
Run Code Online (Sandbox Code Playgroud)

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

<div class="space">
</div>

//css code:

.space {
 white-space:pre
}
Run Code Online (Sandbox Code Playgroud)

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

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

}
Run Code Online (Sandbox Code Playgroud)