2012-08-22 2 views
1

사용자 설명서 (순수한 HTML 코드, JSP이 아님)를 표시하는 간단한 JSR 286 포틀릿이 있습니다.doView()에서 응답 내용 편집

사실, 내 doView 방법은, 그냥이 포함되어 있습니다

public class UserManualPortlet extends GenericPortlet 
{ 

    @Override 
    protected void doView(RenderRequest request, RenderResponse response) 
      throws PortletException, IOException 
    { 
     PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
       "/html/usermanual.html"); 

     rd.include(request, response);  
    } 
} 

이 작동 예상대로 이미지를 포함하면 그러나 나는 문제가 있습니다. 나는 이미지의 경로 같은 것을해야한다고 알고 있어요 :

<img src='<%=renderResponse.encodeURL(renderRequest.getContextPath() + "/html/image.jpg")%>'/> 

그러나, 사용자 설명서가 포함 된 내 HTML 파일이 다른 곳에서 사용된다, 그래서 나는 순수 HTML 파일로 보존하고 싶습니다.

동적 방법은 내 클래식 images urls을 위의 예제와 같이 바꾸시겠습니까? 아마도 PrintWriter 응답을 사용하고 있을까요?

그런 일이 가능하지 않으면 내 Maven 빌드 중에 JSP 파일을 생성해야합니다.

모든 해결책이나 아이디어를 환영합니다.

답변

0

JSR-268 포틀릿을 사용하면 리소스를보다 쉽게 ​​참조 할 수 있습니다. ResourceURL을 사용하여 renderResponse.createResourceURL()을 만든 다음 ResourceURL에 을 설정합니다. 이는 모든 포틀릿 컨테이너에서보다 일관된 결과를 제공해야합니다.

즉, usermanual.html에서 생성 된 콘텐츠를 수정하려고하지만 요청 디스패처를 사용하는 대신 JSP로 변환하지 않으려면 파일 콘텐츠를 직접로드하고 구문 분석합니다 동시에 URL 바꾸기를 수행 한 다음 모든 내용을 포틀릿의 응답으로 인쇄합니다.

+0

니스,하지만 당신은 * 당신이 * 자신의 *에로드하여 의미합니까? –

+1

은'PortletContext.getRealPath ("/ html/usermanual.html")'을 사용하여 파일의 정확한 위치를 파악한 다음, 내용을로드하고 구문 분석 및 대체를 한 다음 Portlet의 출력에 결과를 쓰는'BufferedReader'를 작성합니다 스트림 또는 작가. –

관련 문제