2010-12-10 19 views
2

對於我的一個項目,我需要根據DataTable組件中可用的mimetype值加載不同的表單。我有標題,內容 - 中間的DataTable和頁腳中的數據顯示。單擊DataTable條目應根據mimetype值在頁腳上加載數據。例如mimetype - 文本將調用文本bean並加載內容,mimetype - pdf將調用pdf bean和pdf插件等。JSF - 使用AJAX調用基於DataTable中的mimetype值加載不同形式

現在,我能夠在單個jsf頁面中只顯示一個mimetype內容。我需要在單個jsf頁面中實現此目的。任何人都可以發送一些輸入嗎?

這裏是我使用的示例代碼 - 文本

<h:form id="form1"> 
    <h:dataTable value="#{info.office.programmers}" var="programmer"> 
     <h:column> 
      <f:facet name="header">Report Name</f:facet> 
       <h:commandLink id="reportName" value="#{programmer.reportName}"> 
        <f:param name="RID" value="#{programmer.reportName}" /> 
        <f:param name="mime" value="#{programmer.mimeType}" /> 
        <f:ajax render=":form2"/> 
       </h:commandLink> 
     </h:column> 
     <h:column> 
      <f:facet name="header">Mime Type</f:facet> 
      <h:commandLink id="mimeType" value="#{programmer.mimeType}"> 
       <f:param name="RID" value="#{programmer.reportName}" /> 
       <f:param name="mime" value="#{programmer.mimeType}" /> 
       <f:ajax render=":form2"/> 
      </h:commandLink> 
     </h:column> 
    </h:dataTable> 
</h:form> 

點擊的dataTable與MIME類型=「文本」鏈接將調用Text.xhtml和顯示文本數據。

<h:form id="form2"> 
    <ui:include src="Text.xhtml"/> 
</h:form> 

點擊數據表與MIME類型=「PDF」將調用這個窗口2

<h:form id="form2"> 
    <object data="/<directory>/DisplayPdf.jsf" type="application/pdf" width="100%" height="100%"> 
</h:form> 

回答

3

使用rendered屬性有條件地呈現在視圖組件。

<h:form id="form2"> 
    <h:panelGroup rendered="#{param.mime == 'text'}"> 
     <ui:include src="Text.xhtml"/> 
    </h:panelGroup> 
    <h:panelGroup rendered="#{param.mime == 'pdf'}"> 
     <object data="/<directory>/DisplayPdf.jsf" type="application/pdf" width="100%" height="100%"> 
    </h:panelGroup> 
</h:form> 
+0

您好BalusC,感謝您的解決方案。它解決了我的問題。 (我用你的博客顯示JSF pdf文件) – GDK 2010-12-13 14:38:58