我是JAX-RS的新手,有很多問題(這讓我很懷念SOAP)。這是我的代碼片段。 getMergedPDFReport方法應該接受一個文件並在處理完成後返回一個文件。這之後,我會擔心客戶JAX-RS的問題
@GET
@Produces("application/pdf")
@Path("merge-service")
public Response getMergedPDFReport(@QueryParam(ApiParameters.WORD_DOCUMENT) File wordDocument,
@QueryParam(ApiParameters.MERGE_FIELDS)Object[] fieldNames,
@QueryParam(ApiParameters.MERGE_VALUES) Object [] fieldValues) {
ResponseBuilder builder =null;
try {
File product = DocumentUtil.generatePDF(wordDocument, fieldNames, fieldValues);
builder = Response.ok(product);
builder.header("Content-Disposition", "attachment; filename=\\\"report.pdf\\\"");
} catch (Exception e) {
e.printStackTrace();
}
return builder.build();
}
我得到那個說「找到的類型的公共javax.ws.rs.core.Response的參數沒有注入源」在我的服務器日誌警告。我似乎無法知道爲什麼。 2.我使用@QueryParam註釋權嗎?我應該將它用於File和數組類型嗎?我通過@BeanParam,@MatrixParam和@QueryParam在線觀看了很多辯論。由於我不知道前兩個做什麼,我決定保持簡單。
任何幫助,將不勝感激。
我不知道,如果你得到警告實際上是相關的代碼你已經呈現爲您不必在方法的類型Response'的'參數。您的一般設計有兩個缺陷IMO:使用HTTP POST而不是GET來上傳文件。 GET是安全且冪等的操作,因此不得更改資源狀態。調用的URI通常受限於框架的長度。如果將編碼文件作爲查詢參數傳遞,則URI的長度可能變得相當大,因此會增加拒絕的可能性。 –