这两天在做一个JEE的实验,要求使用JSF,尽管之前我也是JEE规范的推崇者,
但是见识过了Java世界里其他的模板引擎以及nodejs的威力之后,不得不说,JSF还是不够成熟、需要发展(用ui:和c:组合嵌套form、command时各种问题)。
言归正传,今天要说的是在线编辑器与JSF:
在线编辑器都不会陌生,像当下很火的kindeditor、ckeditor等等,实在很多。
录入编辑器内容到数据库里并不难,要么转lob录入,要么直接录入长串,但是怎么在显示回来,却会在JSF的世界里碰到问题。
在JSF的世界里,EL表达式的值在默认情况下是转义的(<变lt;>变gt;等等),或者说当我们直接使用
#{xxxx}
在页面显示数据的时候,效果和
<h:outputText value="#{xxxx}"/>
是一致的。
而显示回来编辑器录入的html就需要没有被转义的html(另一个退而求其次的方案就是放进textarea里然后初始化一个只读的编辑器)。
折腾了一阵子,发现解决方案很简单,示例代码如下:
<!-- 显示区域 -->
<div>
<!-- 显示内容 -->
<h:outputText value="#{xxxx}" escape="false"/>
</div>
设置一下escape属性就大功告成了。
积累点点滴滴,才能江河湖海,分享出来给还在为这个小问题头疼的小伙伴们