JSF + Primefaces + StreamedContent + documentViewer + ajax

时间:2015-05-24 16:58:35

标签: ajax jsf primefaces

我使用Primefaces 5.2和扩展3.1。 我有我的数据表,点击每一行我想显示模态,在这个模态下使用documentViewer,它将根据从所选行传递的参数显示文档。

这样我就可以在数据表中调用我的模态

<p:ajax event="rowSelect" update=":previewDataForm" oncomplete="$('.previewDataModal').modal();" immediate="true">
        <f:param name="pdfFile" value="#{row.dataPath}"/>
</p:ajax>

这是我的模式:

<b:modal id="previewDataModal" title="Preview" styleClass="orderPreviewModalPseudoClass">
    <h:form id="previewDataForm">
        <pe:documentViewer height="550" value="#{contentStreamHelperBean.pdfFromFileSystem}" />
    </h:form>
</b:modal>

这是我的流助手

@Component("contentStreamHelperBean")
@Scope("request")
public class ContentStreamHelperBean extends BaseBean {

    private static final Logger log = LoggerFactory.getLogger(ContentStreamHelperBean.class);


    public StreamedContent getPdfFromFileSystem() {
        String pdfFile = getRequestAttribute("pdfFile");
        if (getFacesContext().getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {

            if (StringUtils.isNotEmpty(pdfFile))
                try {
                    return new DefaultStreamedContent(new FileInputStream(new File(pdfFile)), "application/pdf");
                } catch (FileNotFoundException e) {
                    log.error("Unable to get pdf", e);
                }
        }
        return new DefaultStreamedContent();
    }
}

问题是,当调用onclick时,我无法在我的ContentStreamHelper中获取pdfFile参数:

  1. 如何将参数从dataTable rowSelect传递给我的backingBean?
  2. 这是如何用documentViewer显示PDF的好方法吗?

0 个答案:

没有答案