2012-11-28 7 views
1

정상적인 결과 유형을 사용하여 Struts2 액션 (jsp 처리 후 최종 HTML)에서 생성 된 HTML을 다운로드 할 수 있는지 알고 싶습니다. 페이지를 표시하는 대신 다운로드하는 것이 좋습니다. 내가 시도 무엇struts2 다운로드 HTML

: 나는 몇 가지 인코딩 문제에 봉착하기 때문에,

UrlReader.read("generateHTMLAction") 

및 입력 스트림에서 그 퍼팅 :

<result name="success" type="stream"> 
    <param name="location">/jsp/dummy.jsp</param> 
    <param name="contentType">application/text</param> 
    <param name="contentDisposition">attachment; filename="page.html"</param> 
</result> 

나는하지는 같은 것을 사용하고 싶습니다. 어떤 아이디어라도 빠를 것입니다. 감사합니다.

+0

왜 브라우저에서 소스를 볼 수 있습니까? 어쨌든, 아니오, 기본 결과 유형을 사용하지 않습니다. 당신은 항상 일반 필터를 사용하여 MIME 형식을 변경할 수 있습니다. –

+0

표준 디스패처 결과 유형을 사용하고 JSP 지시문을 사용하여 HTTP 헤더를 적절하게 설정할 수 없습니까? – chad

+0

@DaveNewton 내 코드는 여러 테이블에서 jqgrid 목록을 생성하는 데 사용됩니다. Bean 속성 이름과 유형을 조정하기 위해 리플렉션을 사용하여 생성됩니다. 사용자가 각 테이블에 대해 HTML을 다운로드하여 원하는대로 사용할 수 있기를 바랍니다. – German

답변

1

반환되는 응답의 처리는 대부분 HTTP 헤더와 브라우저에서 어떻게 해석되는지에 따라 결정됩니다. 그래서, 내가 아는 한 표준 디스패처 결과 유형과 JSP를 사용할 수 있습니다. JSP 지시문을 사용하여 브라우저가 원하는 방식으로 응답 페이로드를 처리하도록 적절한 HTTP 헤더를 설정할 수 있습니다.

+0

글쎄, 마지막으로 액션에서'ServletResponseAware'을 구현하고
행을 추가했다. response.setHeader ("Content-Disposition", "attachment; filename ="+ bean + " .jsp ");'jsp 수정을 피하기 위해. struts.xml은 여전히 ​​단순합니다. '/jsp/page.jsp'감사합니다. @chad @DaveNewton – German

+0

땀이 없습니다. 호기심에서 왜 헤더 설정을 jsp 밖으로 지키고 싶습니까? – chad

+0

jsp를 표시하고 다운로드하는 데 모두 사용하고 있으므로 동일한 JSP를 호출하는 2 가지 다른 작업이 있습니다. 따라서 jsp에 로직을 추가하지 않으려 고 액션 중 하나만 수정했습니다. 내가 아는 건, 난 지저분하지만, 내 다른 사람의 질문을보고, 당신은 내가 일반적인 일을하고 있다는 것을 알게 될 것이다. – German

0

IF 또는 어떻게 수행 할 수 있는지 알지 못합니다.

은 내가 당신에게 말할 수있는 것은 즉 :

  • 는 여기에 어떤 location PARAM 존재하지 않습니다 : 그것은 다른 결과 유형 (DispatchResult, 프리 마커 등),하지 Stream type에서에서입니다. 좋은 시도이지만, 여러분의 요구에 맞는 Struts2 결과 유형 중에는 out-of-the-box가 없다는 것이 확실합니다.

  • 최종 결과에서 작동하지만 렌더링되기 전에 Interceptor's PreResultListener 기능을 사용할 수 없으며 인터셉터에서 완전히 뛰어 내립니다.

    내 2 센트 :

    디버그 목적으로이 작업을 수행 할 경우, 그리고 프로그래밍하고 진짜 문제는 결과가 이미 의해 "오염"때문에 당신이 View Source 브라우저의 기능을 사용할 수 있다는 것입니다 브라우저 구문 분석, 그럼 당신은 charSet을 설정 JSP의 원시 콘텐츠를 얻으려면 PlainText result type (안된, 그것은 단지 생각, 나는 그것을 사용하지 않은)를 사용하려고 시도하고 적절한 원시 JSP로 읽습니다 편집기 (Eclipse, Notepad ++ 등).

+1

일반 텍스트 결과는 구문 분석되지 않은 JSP/etc를 반환합니다. 소스보기는 DOM보기와 다릅니다 (예 : 웹 개발자 마크 업을 사용하는 경우 소스에 있지 않지만 DOM을 사용하면 관리자가 열립니다). –

+0

고마워, 그때 진짜 * 원시 : –