我们需要输出文本,该文本是数据库中静态文本和动态值的组合,使用具有特定于语言的静态文本块的消息属性来解析全文 .
我们需要转义输出文本以防止XSS攻击 .
但是,我们还需要将格式应用于完整字符串,例如:
Hello <b>{username}</b>!
这当然是伪语法, {username}
是要用真实用户名替换的变量,另一个文本是静态的并且在消息属性中定义(例如: "Helloy <b>{0}</b>!"
) .
一个普通的JSF outputText将无法工作,因为它将逃避一切或什么都没有,从而破坏我们的格式 .
请注意,我们无法从这些片段中创建“真正的”JSF组件,因为变量字段的位置和排序是依赖于语言的(例如德语与英语中的字序排列不同) .
Seam有一个名为formattedText的组件来处理这个并且有一个优雅的解决方案 . 但是我们不能在我们的应用程序中使用Seam .
有没有类似的方法/库?
1 回答
只需在输出参数上应用JSTL fn:escapeXml即可 .