我有一个表单,在页面上显示10个ID。基于id,我可以获得用户名,角色,配置文件等。现在,如果我选择5个ID然后单击名为PRINT的标签,那么它应该下载一个PDF,其中将显示这些带有名称的5个ID。但是,在我的情况下,它不打印任何东西或方法没有获得动作和ID。 Action或lblpdfgenerator类没有问题。问题在于功能:
这是我的JSP:
<s:if test="hasActionMessages()">
<div class="alert alert-success">
<i class="fa fa-check-square"></i>
<s:actionmessage />
<s:if test="Count > 0">
<a href="javascript:void();" id='addressLabel' class="printLbl" onclick="PrintLabel()"
style="text-decoration: underline; font-weight: bolder; margin-left: 20px; color: blue;">Print
Label
</a>
</s:if>
<s:hidden id="docId" name="docId" value="%{docList}"></s:hidden>
</div>
<div id="pdf-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="pdfModal" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">Close</button>
<h4 class="modal-title" id="myModalLabel">Print Label</h4>
</div>
<div class="modal-body" id="iframed"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
function PrintLabel(){
docId= $("#docId").val();
/* $.get("printlabelgenerate", {DocList : docId}, function(data) {
$("#iframed").empty();
$("#pdf-modal").modal('show');
}); */
$("#iframed").empty();
$("#pdf-modal").modal('show');
$("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
$("#pdf_framesrno").attr("src","printlabelgenerate?docId=" + docId);
return false;
}
printlabelgenerate是我的行动。
动作类。
public String printLabel() throws Exception {
lbList = new ArrayList<LabelPrint>();
logger.info("Reached inside printLabel() method"+DocList);
String[] total= DocList.split(",");
for (String docId : total) {
lbPrint = userService.getPrintLabel(docId);
ByteArrayOutputStream bs = LblPDFGenerator.createPDF(lbPrint,docId);
myStream== = new ByteArrayInputStream(bs.toByteArray());
if (myStream== null) {
this.addActionMessage("Not Generated");
return INPUT;
}
return SUCCESS;
}
如果我像这样调用它,我的动作因此方法被调用。但它没有下载任何东西。
function PrintLabel(){
docId= $("#docId").val();
$.get("printlabelgenerate", {DocList : docId}, function(data) {
$("#iframed").empty();
$("#pdf-modal").modal('show');
});
$("#iframed").empty();
$("#pdf-modal").modal('show');
$("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
$("#pdf_framesrno").attr("src","printlabelgenerate?docId=" + docId);
return false;
}
但是,如果只是这样打电话(在上面评论):
$("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
$("#pdf_framesrno").attr("src","printlabelgenerate?docId=" + docId);
return false;
}
这没有进入我的print方法,因为它没有得到任何id。如何下载PDF?我究竟做错了什么?
您是否尝试过使用Primefaces Extensions Document Viewer库,有一个很好的简单示例,可以创建具有下载功能的PDF Viewer等等。
例:
<pe:documentViewer value="#{yourViewBean.content}" download="YourPdfFile.pdf"/>