#java #spring #jsp #itext
#java #spring #jsp #itext
Вопрос:
У меня есть форма, которая показывает 10 идентификаторов на странице. На основе идентификатора я могу получить имя пользователя, роль, профиль и т.д. Теперь, если я выберу 5 идентификаторов, а затем нажму на ярлык с именем PRINT, он должен загрузить PDF-файл, в котором будут отображаться эти 5 идентификаторов с именами. Но, в моем случае, он ничего не печатает, или метод не получает действие и идентификатор. Нет проблем с 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;
}
Если я вызываю это так, вызывается мой метод action, следовательно. Но он ничего не загружает.
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;
}
это не попадает в мой метод печати, поскольку он не получает никакого идентификатора. Как мне заставить его загрузить PDF-файл? Что я делаю не так?
Ответ №1:
Вы пробовали использовать библиотеку просмотра документов Primefaces Extensions, есть хороший и простой пример создания программы просмотра PDF с функцией загрузки и многое другое.
Пример:
<pe:documentViewer value="#{yourViewBean.content}" download="YourPdfFile.pdf"/>