Html jsf消息:添加链接
目前在JSF中,消息(Html jsf消息:添加链接,html,jsf,richfaces,Html,Jsf,Richfaces,目前在JSF中,消息(rich:messagestag)中包含的所有HTML都被转义并显示为标记。例如,在我的支持bean中,我有: createMessage("Title created successfully with product number: <a href=\"http://www.example.com\">" + product.getProductNumber() + "</a>."); 有没有办法避免这种情况,而只是在消息中提供一个实际的链接
rich:messages
tag)中包含的所有HTML都被转义并显示为标记。例如,在我的支持bean中,我有:
createMessage("Title created successfully with product number: <a href=\"http://www.example.com\">" + product.getProductNumber() + "</a>.");
有没有办法避免这种情况,而只是在消息中提供一个实际的链接
提前谢谢
~Zack听起来您需要创建自己版本的
rich:messages
,它具有escape
属性,比如h:outputText
,这样您就可以禁用HTML转义了。一个快速解决方案是创建一个新的渲染器
我为h:messages做了这项工作,因为我想将不同严重程度的消息划分为不同的div。如果您永远不想使用默认渲染器,那么它是一个不错的选择
要覆盖/扩展的标准类是:
public class MessagesRenderer extends HtmlBasicRenderer
您只需要使用一个不会转义文本的ResponseWriter。具体类是HtmlResponseWriter,它转义文本。您可以对此进行扩展并覆盖
public void writeText(Object text, String componentPropertyName)
这样它就不用HtmlUtils了
然后只需将新的渲染器添加到faces-config.xml
<render-kit>
<renderer>
<component-family>javax.faces.Messages</component-family>
<renderer-type>javax.faces.Messages</renderer-type>
<renderer-class>com.mypackage.MessagesRenderer</renderer-class>
</renderer>
</render-kit>
javax.faces.Messages
javax.faces.Messages
com.mypackage.messagesrender
如果使用jquery,则可以取消对xml字符的扫描:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$(".esc").each(function(i) {
var h = $(this).html();
h = h.replace(/</gi, "<");
h = h.replace(/>/gi, ">");
$(this).html(h);
});
});
//]]>
</script>
//
不错。供将来参考:一年后,完整代码的相同方法发布在。
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$(".esc").each(function(i) {
var h = $(this).html();
h = h.replace(/</gi, "<");
h = h.replace(/>/gi, ">");
$(this).html(h);
});
});
//]]>
</script>