我需要从Backing Bean添加组件。我在Managed Bean中使用String,它将所有jsf组件都作为String.In 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'/>;
My Logic将正常工作。如果我在该String中使用jsf标记,则JSF组件将按原样呈现。它不会呈现为Html。
我知道最后所有的Jsf标签都会被转换成html标签。 有没有办法处理除ui以外的jsf标签的动态呈现:composition和ui:include? p>
提前致谢..
答案 0 :(得分: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>