어떻게 BLOB 유형 바이트를 변환 할 수 있습니까?
은 그냥 JPA @Entity
의 byte[]
재산 @Lob
주석을 넣어.
어떻게 이런 일을 할 수 있습니까?
JSF가 엔티티 ID를 요청 매개 변수로 사용하여 테이블에서 원하는 링크를 생성하도록해야합니다.
<h:dataTable value="#{bean.entities}" var="entity">
<h:column>
<h:outputLink value="#{request.contextPath}/fileservlet?id=#{entity.id}" target="_blank">#{entity.filename}</h:outputLink>
<h:column>
</h:dataTable>
이어서 (생략 명백히 파라미터 검증 및 예외 처리)를 doGet()
에 응답하여 byte[]
스트림 간단한 file servlet를 생성한다.
@WebServlet("/fileservlet")
public class FileServlet extends HttpServlet {
@EJB
private EntityService service;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Entity entity = service.find(request.getParameter("id"));
response.setContentType(entity.getContentType());
response.setContentLength(entity.getContent().length);
response.setHeader("Content-Disposition", "inline;filename=\"" + URLEncoder.encode(entity.getFilename(), "UTF-8") + "\"");
response.getOutputStream().write(entity.getContent());
}
}
여기서 getContent()
은 @Lob byte[]
속성을 반환합니다.
감사합니다. BalusC. 나는 또한 당신의 연결을 찾아 냈다 : http://balusc.blogspot.fr/2007/07/fileservlet.html – pims42
당신을 환영한다. 이 링크는 JPA/EJB가 아닌 "일반 JDBC"와 관련이 있습니다. – BalusC
예,하지만 제가 원하는대로 코드를 작성했습니다. – pims42