-2

我需要从支持 Bean 添加组件。我在托管 Bean 中有字符串,它将所有 jsf 组件作为字符串。在 UI 中我需要作为组件呈现。我的托管 bean 编码是

String htmlContent = "<h:inputText/>";

public String getHtmlContent()
{
   return this.htmlContent;
}

XHTML 编码是

<h:outputText value="#{managedBean.htmlContent}" escape = "false"/>

如果我在 htmlContent 中使用 Html 标签,例如

String htmlContent = "<input type='text'/>;

我的逻辑可以正常工作。如果我在该字符串中使用 jsf 标签,JSF 组件将按原样呈现。它不会呈现为 Html。

我知道最后所有的 Jsf 标签都会被转换成 html 标签。除了 ui:composition 和 ui:include 之外,还有什么方法可以处理 jsf 标签的动态呈现?

提前致谢..

4

1 回答 1

1

我认为您的解决方案是个坏主意。据我了解,您想在支持 bean 中生成您的视图。不要尝试将模型/控制器与视图混合。取而代之的是,只需将数据添加到您的视图中<h:panelGroup/>并添加rendered标签,这样您就可以控制它是否会被渲染。

我会这样做:

@ManagedBean
@ViewScoped
public class MyBackingBean {
    private boolean renderPieceOfView;
    // getter and setter for renderPieceOfView
}

看法

<h:panelGroup rendered="#{myBackingBean.renderPieceOfView}">
    ... this will be rendered or not ...
</h:panelGroup>

您还可以创建将放置在... this will be rendered or not ...

<h:panelGroup rendered="#{myBackingBean.renderPieceOfView}">
    <ui:include src="#{templateFactory.currentViewPath}" />
</h:panelGroup>
于 2013-03-18T13:33:40.843 回答