我有一个依赖于JSF2的现有Web应用程序 . 在大多数页面中,有表达式从各种属性文件输出文本 . 某些属性可能包含html . 但是,JSF表达式将html转换为纯文本 . 我找到的解决方案是使用<h:outputText>并将escape设置为false . 由于需要包装的表达量很大,使用它会很麻烦 .
我的问题是,有没有办法配置所有表达式不逃避HTML?
如果我是你,我会创建自己的复合组件,可以在xhtml中调用
<myComponents:outputText value="<STRONG>the html taged value</STRONG>">
只需将此自定义组件添加到defaut jsf文件夹 src/webapp/components 中的新xhtml文件中 .
src/webapp/components
喜欢 :
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:cc="http://java.sun.com/jsf/composite"> <cc:interface> <cc:attribute name="value" required="true"/> </cc:interface> <cc:implementation> <h:outputText value="#{cc.attrs.value}" escape="false"/> </cc:implementation> </ui:composition>
不要忘记在 ui:composition 标签中使用组件 xmlns:field="http://java.sun.com/jsf/composite/components/myComponents 的xhtml页面中添加folowwing名称空间
ui:composition
xmlns:field="http://java.sun.com/jsf/composite/components/myComponents
希望这可以帮助...
1 回答
如果我是你,我会创建自己的复合组件,可以在xhtml中调用
<myComponents:outputText value="<STRONG>the html taged value</STRONG>">
只需将此自定义组件添加到defaut jsf文件夹
src/webapp/components
中的新xhtml文件中 .喜欢 :
src / webapp / components / myComponents / outputText.xhtml
不要忘记在
ui:composition
标签中使用组件xmlns:field="http://java.sun.com/jsf/composite/components/myComponents
的xhtml页面中添加folowwing名称空间希望这可以帮助...