如何像HTML标签一样呈现JSF标签?
例如,我有一些html代码在字符串字段:
<pre>String code = "example <br/> example";</pre>
如果我使用
<pre><h:outputText value="#{bean.code}" escape="false"/></pre>
我将得到
<pre>example
example</pre>
现在我想以同样的方式渲染jsf组件。例如:
<pre>String code = '<h:button value="something" action="something"/>';</pre>
但它将呈现原样。我认为它必须首先由JSF servlet转换为html标记。我如何以这种方式呈现JSF控件呢?我有文本包含大量的JSF控件(文章)存储在数据库中,我需要方便地呈现JSF控件。
这是一个非常糟糕的主意。JSF标签必须放在Facelet文件中,文本必须放在DB中。在将文本存储到DB之前,不应该手动向文本添加JSF标记。您应该在Facelet文件中执行此操作,同时显示来自DB的文本。这就是MVC的"V"应该是如何工作的。
如果你真的坚持这样做(这很容易受到安全攻击,你必须做很多验证来防止这种情况),那么你能做的最好的事情就是创建一个Facelets ResourceResolver
,它从DB获取数据,将其保存为Facelet文件在内存或磁盘上,并返回URL
给它。