2013-03-18 2 views
-2

Backing Bean에서 구성 요소를 추가해야합니다. 모든 Jsf 구성 요소를 String으로 갖게하는 Managed Bean의 String을가집니다. UI에서는 구성 요소로 렌더링해야합니다. 내 관리 콩 코딩은ManagedBean에서 구성 요소 추가

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

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

이고 내가 JSF 태그를 사용합니다 괜찮아요 내가

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

내 논리처럼 htmlContent에 의지 작품을 HTML 태그를 사용하는 경우 XHTML 코딩은

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

입니다 해당 String에서 JSF 구성 요소는 그대로 렌더링됩니다. Html로 렌더링되지 않습니다.

결국 모든 Jsf 태그가 html 태그로 변환됩니다. ui : composition 및 ui : include?가 아닌 jsf 태그의 동적 렌더링을 처리하는 방법이 있습니까?

미리 감사드립니다.

+0

에 배치됩니다 템플릿 파일을 만들 수 있습니다 또한

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

= " false " –

+0

나를 위해 작동하지 않을 수 있습니다 .. –

+0

'렌더러 d' 속성은 서버 측에서 동적 값을 true 또는 false로 설정합니다. –

답변

1

나는 해결책이 좋지 않다고 생각합니다. 내가 알기로 당신은 뒷받침 빈에서 당신의 견해를 생성하고 싶다. 모델/컨트롤러를보기와 혼합하지 마십시오. 이 대신에보기에 데이터를 <h:panelGroup/>에 추가하고 rendered 태그를 추가하면 렌더링 여부를 제어 할 수 있습니다.

나는이 방법으로 작업을 수행합니다

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

보기 당신은 탈출을 제거하려고 ... this will be rendered or not ...

<h:panelGroup rendered="#{myBackingBean.renderPieceOfView}"> 
    <ui:include src="#{templateFactory.currentViewPath}" /> 
</h:panelGroup> 
+2

'@ ViewScoped' 관리 빈이 더 좋을 것입니다. [JSF 2.0의 통신] (http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html) –

+0

@Luiggi, 맞습니다. 내 대답을 편집했습니다. – pepuch

+0

웹 개발자로서 저는 MVC Pattern을 알고 있습니다.하지만 Jsf에서 가능한지 알고 싶습니까? –