2010-12-10 34 views
2

Pour l'un de mes projets, j'ai besoin de charger différents formulaires en fonction des valeurs mimetype disponibles dans les composants DataTable. J'ai l'en-tête, le contenu - DataTable au milieu et l'affichage des données dans le pied de page. Cliquez sur l'entrée DataTable doit charger les données sur le pied de page en fonction des valeurs de type MIME. Par exemple, mimetype - text appellera text bean et chargera le contenu, mimetype - pdf appellera pdf bean et pdf plug in et ainsi de suite.JSF - Charger différents formulaires en fonction des valeurs de type MIME dans DataTable à l'aide de l'appel AJAX

À l'heure actuelle, je ne peux afficher qu'un seul type de mime dans une seule page jsf. Je dois réaliser ceci dans la page simple de jsf. Quelqu'un pourrait-il envoyer des intrants?

Voici l'exemple de code que je utilise - pour le texte

<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> 

En cliquant sur dataTable avec mimetype = lien « texte » appellera Text.xhtml et les données d'affichage.

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

Cliquez sur DataTable avec mimetype = "pdf" appellera cette form2

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

Répondre

3

Utilisez l'attribut rendered pour ne rendre les composants dans la vue.

<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

Bonjour BalusC, Merci pour votre solution. Cela a résolu mon problème. (J'ai utilisé votre blog pour l'affichage des fichiers pdf JSF) – GDK