2009-11-05 2 views
0

iframe의 서블릿 (JSP 페이지)에서 가져온 자바 객체를 표시 할 수 있습니까?자바 객체를 표시 할 때 iframe 문제가 발생합니다.

다음은 내가 시도한 것입니다. blob 형식으로 mysql 데이터베이스에 pdf 파일을 저장하고 있습니다. Hibernate bean 클래스에서 나는 해당 변수를 Byte []로 선언했다.

이제 iframe을 통해 개체를 표시하려고합니다.

<% String oid = null; 
    oid = request.getAttribute("oid").toString(); 
    request.setAttribute("oid",oid); 
    %> 

<jsp:useBean id="cusBean" class="com.zoran.action.CustomBean" scope="page" > 
<jsp:setProperty name="cusBean" property="parentId" value="1" /> 
<jsp:setProperty name="cusBean" property="parentType" value="FILE" /> 
</jsp:useBean> 

<iframe id="displayFrame" src="<%= cusBean.getFile() %>" width="1000" height="500" FRAMEBORDER="0" value="1"></iframe> 

And custom bean is the java class where I'm running the hql script to return the blob data through cusBean.getFile(). 

내가이 일을 제대로 수행하고 있습니까? 어떻게 그 밖에 Iframe에서 자바 객체 변수를 인쇄 할 수 있습니까?

제발 나를 도와주세요.

감사합니다, 아 디트

답변

1

EL (Expression Language) 사용.

<iframe src="${cusBean.file}"> 

는 JSP 규칙 # 1 코딩 : 스크립은 나쁜. 절대 사용하지 마십시오. 항상 Taglibs/EL을 사용하십시오. Taglibs/EL을 사용할 수 없기 때문에 스크립틀릿을 작성할 필요성을 느낀다면 원하는 코드 로직은 JSP 파일이 아닌 Java 클래스 (servlet, bean, filter, dao 등)에 속하게됩니다.

첫 번째 의견에 대한 답변으로 [편집] : "리소스를 사용할 수 없음"오류 메시지는 단순히 URL이 잘못되었음을 나타냅니다. 실제 값 %5BLjava.lang.Byte;@967e8c을 보면 URL이 String.valueOf(aByteArray) 인 것처럼 보입니다. 이것은 말이되지 않습니다. $ {cusBean.file}이 내용의 내용이 byte[]이고 따라서 URL이 아닌 파일을 나타내는 경우 읽기/쓰기 작업을 수행하는 서블릿이 필요합니다. 그것은 기본적 할 필요는)에의 doGet (에 다음과 같다 :

// Init servlet response. 
response.reset(); 
response.setContentType("application/pdf"); 
response.setHeader("Content-disposition", "inline; filename=\"yourname.pdf\""); 

// Init streams. 
BufferedInputStream input = null; 
BufferedOutputStream output = null; 

try { 
    // Preferably use InputStream, not byte[] as it is memory hogging. 
    input = new BufferedInputStream(getPdfAsInputStream()); 
    output = new BufferedOutputStream(response.getOutputStream()); 

    // Write file contents to response. 
    byte[] buffer = new byte[8192]; 
    int length; 
    while ((length = input.read(buffer)) > 0) { 
     output.write(buffer, 0, length); 
    } 
} finally { 
    close(output); 
    close(input); 
} 

지도 web.xml에이 서블릿과 당신의 <iframe> 요소의 'SRC'속성을 호출합니다. 필요한 경우 매개 변수 또는 pathinfo를 전달하여 서블릿이 정확히 어떤 PDF 파일을 InputStream으로 읽어야하는지 알 수 있습니다. 다음과 같이 예를

<iframe src="pdfservlet/${cusBean.fileName}"> 

와를 들어 파일 이름을 얻을 : 더 힌트를 들어 당신이 this article이 유용하게 사용할 수

String fileName = request.getPathInfo(); 

.

희망이 도움이됩니다.

+0

고맙습니다. 그렇습니다. 그렇지만 동의합니다.