我在数据库中存储了一个字符串.当我保存并检索字符串时,我得到的结果如下:
这是我的新对象
测试多条线
- 测试1
- 测试2
- 测试3
这就是我在调用save和index方法时从println命令获得的内容.
但是当我在屏幕上显示它时.它显示如下:
这是我的目标测试多行 - 测试1 - 测试2 - 测试3
已经尝试过显示如下:
${adviceInstance.advice?.encodeAsHTML()}
Run Code Online (Sandbox Code Playgroud)
但仍然是一样的.
我是否需要替换\n
或类似的东西?有没有更简单的方法来正确显示它?
常见问题有多种解决方案
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)
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |