【问题标题】:In a spring messages.properties, how to ensure line break of error message when using an error code as key?在 spring messages.properties 中,使用错误代码作为键时如何确保错误消息的换行?
【发布时间】:2010-12-21 10:45:59
【问题描述】:
在messages.properties:
error.code=This is error message.\nThis is next line of error message.
现在,当我使用此“error.code”为表单字段设置“errors.rejectValue”时,当使用 @987654326 显示错误消息时,我无法在 jsp 页面上显示 '\n' 的换行符@元素。
使用<br/> 代替'\n' 也不起作用,并按原样显示在页面上。
【问题讨论】:
标签:
java
spring
jsp
spring-mvc
【解决方案1】:
为了将<br> 显示为换行符,或者为了使错误消息正文中的任何其他 html 标记生效,例如<b>,只需将 htmlEscape="false" 添加到您的 form:errors 元素即可在标签级别关闭 html 转义。
【解决方案2】:
HTML 页面中不同行的布局实际上并不是消息包可以处理的,它只是不适合该任务。如果您需要显示多行,那么实际上您将需要多条消息,属性文件中有多个条目。
也许你可以在你的属性文件中创建一些迭代一系列属性的东西:
error.code.1=This is error message.
error.code.2=This is next line of error message.
然后它成为 JSP 的工作来呈现消息序列。虽然不是很优雅,但我现在想不出更好的解决方案:)
【解决方案3】:
我在从数据库加载消息时遇到了同样的问题,这意味着“\n”(新行)序列被转义了。所以这里是示例解决方案,将“\\n”替换为“\n”:
String twoLinesMessage=((String)context.getMessage("error.code", null, locale)).replace("\\n","\n");
【解决方案4】:
扩展 spring 标记 form:errors 并添加从 \n 到 <br /> 的转换也是一种不完美的解决方案,但可能会奏效。
【解决方案5】:
在您的代码中使用"<br/>" 代替"\n"。
例如:
return i + " x " + j + " = "+ (Integer.valueOf(i * j) + "<br/>"));
这将返回 web 中带有换行符的乘法表。