Обновление простых лиц pdf медиа не работает

У меня есть проблема, связанная с рендерингом pdf-файла meida типа Primefaces4 в браузере. Я успешно попробовал пример в витрине с сайта Primefaces. Теперь я хочу получить новую функцию, которая предлагает древовидную структуру с узлами документа на левой панели. Пользователь может выбрать один документ, чтобы отобразить его на центральной панели. Это означает, что он генерирует медиа-поле pdf в бобе, когда пользователь выбирает один документ в дереве.

связанный код показан ниже:

backbean:

@ManagedBean
@ViewScoped
public class DocumentsBean implements Serializable {

private static final long serialVersionUID = 3560539268513760978L;
private TreeNode root;
private String url;
private TreeNode selectedNode; 
private StreamedContent media;

public DocumentsBean() {
    root = new DefaultTreeNode("Root");
}

public TreeNode getRoot() {
    return root;
}

public TreeNode getSelectedNode() {  
    return selectedNode;  
}  

public void setSelectedNode(TreeNode selectedNode) {  
    this.selectedNode = selectedNode;  
}  

public void onNodeSelect(NodeSelectEvent event) {  
    File file = (File) this.selectedNode.getData();
    generatePDF(file);
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public void explore() {
    root = new DefaultTreeNode(new File(this.url), null);
    constructDir(root);
}

/**
 * construct directory and its sub files.
 * @param parent
 */
private void constructDir(TreeNode parent) {
    File file = (File) parent.getData();
    File[] files = file.listFiles();
    for (File f: files) {
        if (f.isFile()) {
            new DefaultTreeNode("document", f, parent);
        } else {
            TreeNode subParent = new DefaultTreeNode(f, parent);
            constructDir(subParent);
        }
    }

}

private void generatePDF(File file) {
    PDFGenerator generator = new PDFGenerator(file);
    File pdf = generator.transformToPDF();

    if (pdf != null) {
        InputStream stream = null;
        try {
            stream = new FileInputStream(pdf);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        media = new DefaultStreamedContent(stream, "application/pdf");
    }

}

public StreamedContent getMedia() {
    return media;
}

}

часть моего взгляда:


            
                 
                

                    
                    
                        
                    

                    
                        
                    
                
            
        

        
            
                  
                    Your browser can't display pdf 
                
            
        

Когда я запускаю этот код, нет ошибок или исключений. Однако в Firefox нет средства просмотра PDF. Действительно странно!

следующий вопрос, основанный на комментариях BalusC:

Я получил это исключение, когда мое приложение работает:

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path     [/DocumentViewer_JSF] threw exception
java.lang.NullPointerException
at     org.primefaces.application.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:114)

Я обнаружил, что эта строка вызывает это исключение:

return new DefaultStreamedContent();

Если я создаю настоящий PDF-файл, исключение исчезает. Но я действительно нене хотите, чтобы файл PDF отображался, если пользователь не выбрал файл.

Ответы на вопрос(1)

Ваш ответ на вопрос