2010-06-14 7 views
0

J'ai besoin de votre aide une fois de plus!Comment prévisualiser les pages html avec richfaces?

J'ai la tâche: J'ai besoin de prévisualiser les pages html dans la page .xhtml. Mes pages html utilisent des graphiques flash, je dois donc être en mesure de montrer flash avec un autre contenu. De plus, ces aperçus doivent être plus petits que la page d'origine.

Je tente de le faire avec: Je pouvais voir le texte, mais pas de contenu flash et image. Quelqu'un pourrait-il dire - où est le problème? Et peut-être que je dois le faire d'une autre manière?

Voici un code:

package no.sfront.clientadmin; 

    /** 
    * @author Elena Veretilo 
    * 
    */ 

    import java.io.IOException; 
    import java.io.OutputStream; 
    import java.util.ArrayList; 

    import javax.faces.context.FacesContext; 

    import org.richfaces.event.UploadEvent; 
    import org.richfaces.model.UploadItem; 

    public class HtmlFileUpload 
    { 
     private ArrayList<HtmlFile> files = new ArrayList<HtmlFile>(); 
     private int uploadsAvailable = 1; 
     private boolean autoUpload = true; 
     private boolean useFlash = true; 


     public static HtmlFileUpload getInstance() { 
      FacesContext facesContext = FacesContext.getCurrentInstance(); 

      return (HtmlFileUpload) facesContext.getApplication().getELResolver() 
        .getValue(facesContext.getELContext(), null, "htmlFileUpload"); 
     } 

     public HtmlFileUpload() { 
     } 

     public void paint(OutputStream stream, Object object) throws IOException { 
      stream.write(getFiles().get((Integer)object).getData()); 
     } 

     public void listener(UploadEvent event) throws Exception{ 
      UploadItem item = event.getUploadItem(); 
      HtmlFile file = new HtmlFile(); 
      byte[] array = item.getData(); 
      file.setLength(array.length); 
      file.setName(item.getFileName()); 
      file.setData(item.getData()); 
      files.add(file); 
      uploadsAvailable--; 
     } 

     public String clearUploadData() { 
      files.clear(); 
      setUploadsAvailable(1); 
      return null; 
     } 

     public int getSize() { 
      if (getFiles().size() > 0) 
       return getFiles().size(); 
      else 
       return 0; 
     } 

     public long getTimeStamp(){ 
      return System.currentTimeMillis(); 
     } 

     public ArrayList<HtmlFile> getFiles() { 
      return files; 
     } 

     public void setFiles(ArrayList<HtmlFile> files) { 
      this.files = files; 
     } 

     public int getUploadsAvailable() { 
      return uploadsAvailable; 
     } 

     public void setUploadsAvailable(int uploadsAvailable) { 
      this.uploadsAvailable = uploadsAvailable; 
     } 

     public boolean isAutoUpload() { 
      return autoUpload; 
     } 

     public void setAutoUpload(boolean autoUpload) { 
      this.autoUpload = autoUpload; 
     } 

     public boolean isUseFlash() { 
      return useFlash; 
     } 

     public void setUseFlash(boolean useFlash) { 
      this.useFlash = useFlash; 
     } 

    } 




public void setName(String name) { 
    Name = name; 
    int extDot = name.lastIndexOf('.'); 
    if(extDot > 0){ 
     String extension = name.substring(extDot +1); 
     if("html".equals(extension)){ 
      mime = "text/html";//"multipart/related";//"text/html"; 
     } else if("mht".equals(extension)){ 
      mime = "text/html";//"multipart/related";//"text/html"; 
     } else if("xhtml".equals(extension)){ 
      mime = "application/xhtml+xml"; 
     } else { 
      mime = "application/x-shockwave-flash"; 
     } 
    } 
} 






     <ui:composition xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:a4j="http://richfaces.org/a4j" 
      xmlns:rich="http://richfaces.org/rich" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:fc="http://www.fusioncharts.com" 
      xmlns:t="http://myfaces.apache.org/tomahawk" 
      template="template.xhtml"> 
<ui:define name="title">Client Admin Page</ui:define> 
<ui:define name="content"> 

     <style> 
      .top { 
       vertical-align: top; 

      } 
      .info { 
       height: 100%; 
       overflow: auto; 
      } 
     </style> 

    <h:form> 
     <h:panelGrid columns="1" rows="2" columnClasses="top,top"> 
      <rich:fileUpload fileUploadListener="#{htmlFileUpload.listener}" 
       maxFilesQuantity="#{htmlFileUpload.uploadsAvailable}" 
       id="upload" 
       immediateUpload="#{htmlFileUpload.autoUpload}" 
       acceptedTypes="html,xhtml,mht" allowFlash="#{htmlFileUpload.useFlash}" 
       listHeight="70px"> 
       <a4j:support event="onuploadcomplete" reRender="info" /> 
       <a4j:support event="onclear" reRender="upload,info" action="#{htmlFileUpload.clearUploadData}"/> 
      </rich:fileUpload> 
      <h:panelGroup id="info"> 
       <rich:panel bodyClass="info"> 
        <f:facet name="header"> 
         <h:outputText value="Uploaded Files Info" /> 
        </f:facet> 
        <h:outputText value="No files currently uploaded" 
         rendered="#{htmlFileUpload.size==0}" /> 
        <rich:dataGrid columns="1" value="#{htmlFileUpload.files}" 
         var="file" rowKeyVar="row"> 
         <rich:panel> 
          <h:panelGrid columns="1"> 
           <a4j:mediaOutput element="object" mimeType="#{file.mime}" 
            createContent="#{htmlFileUpload.paint}" 
            value="#{row}" cacheable="true"> 
            <f:param value="#{htmlFileUpload.timeStamp}" name="time"/> 
           </a4j:mediaOutput> 
          </h:panelGrid> 
         </rich:panel> 
        </rich:dataGrid> 
       </rich:panel> 
       <rich:spacer height="2"/> 
       <br/> 
       <a4j:commandButton action="#{htmlFileUpload.clearUploadData}" 
        reRender="info, upload" value="Clear Uploaded Data" 
        rendered="#{htmlFileUpload.size>0}" /> 
      </h:panelGroup> 
     </h:panelGrid> 
    </h:form> 


</ui:define> 
<ui:define name="return" /> 

Lorsque j'utilise le type MIME "text/html" - je ne pouvais voir que du texte et d'autres contenus (images, swf) Je reçois prochaines exceptions:

org.ajax4jsf.resource.ResourceNotFoundException: ressource non inscrit: org.ajax4jsf.resource.UserResource/c/n/-1082243251/FusionCharts/AngularGauge.swf

ja vax.faces.FacesException: decode d'erreur des données de ressources à org.ajax4jsf.resource.ResourceBuilderImpl.decrypt (ResourceBuilderImpl.java:627)

GRAVES: Servlet.service() pour servlet Faces Servlet a jeté exception org.ajax4jsf. resource.ResourceNotFoundException: ressource non enregistré: org.ajax4jsf.resource.UserResource/c/n/-1082243251/css/stylesheet.css

Répondre

-1

Utiliser framework web Apache wicket pour prévisualiser et développer vos pages

Questions connexes