ISO-8859-1 단일 태피스트리에 대한 인코딩 설정 응용 프로그램에서 완전히 UTF-8 인 응용 프로그램에서 4 페이지

StackOverflow https://stackoverflow.com/questions/153482

문제

페이지를 UTF-8로 제공하는 태피스트리 응용 프로그램이 있습니다. 즉, 서버 응답에는 헤더가 있습니다.

Content-type: text/html;charset=UTF-8

이제이 응용 프로그램 내에 ISO-8859-1 인코딩으로 제공되어야하는 단일 페이지가 있습니다. 즉, 서버 응답에는이 헤더가 있어야합니다.

Content-type: text/html;charset=ISO-8859-1

이 작업을 수행하는 방법? 전체 응용 프로그램에 대한 기본 인코딩을 변경하고 싶지 않습니다.

Google 검색을 기반으로 다음을 시도했습니다.

 @Meta({    "org.apache.tapestry.output-encoding=ISO-8859-1", 
    "org.apache.tapestry.response-encoding=ISO-8859-1", 
    "org.apache.tapestry.template-encoding=ISO-8859-1",
    "tapestry.response-encoding=ISO-8859-1"})
 abstract class MyPage extends BasePage {

    @Override
    protected String getOutputEncoding() {
        return "ISO-8859-1";
    }
 }

그러나 @Meta 주석으로 해당 값을 설정하거나 GetOutPutencoding 메소드를 재정의하지 않습니다.

Tapestry 4.0.2를 사용하고 있습니다.

편집 : 하위 클래스 httpservletresposewrapper가있는 서블릿 필터 로이 작업을 수행했습니다. 래퍼는 SetContentType ()를 대체하여 응답에 필요한 인코딩을 강제로 사용합니다.

도움이 되었습니까?

해결책

필터를 고려해 보셨습니까? 어쩌면 태피스트리 내에서 우아하지는 않지만 일반 필터를 사용하여 관심있는 URL 매핑을 등록 할 수 있습니다. 초기 매개 변수 중 하나는 인코딩 이후입니다. 예시:

public class EncodingFilter implements Filter {
private String encoding;
private FilterConfig filterConfig;

/**
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig fc) throws ServletException {
this.filterConfig = fc;
this.encoding = filterConfig.getInitParameter("encoding");
}

/**
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(encoding);
chain.doFilter(req, resp);
}

/**
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
}

}

다른 팁

당신은 할 수 있습니다 :

    @Override
public ContentType getResponseContentType() {
        return new ContentType("text/html;charset=" + someCharEncoding);
}

필터 제안이 좋습니다. 서블릿을 태피스트리와 혼합 할 수도 있습니다. 예를 들어, XML 문서를 표시하고 동적으로 생성 된 Excel 파일을 제공하기위한 서블릿이 있습니다. 서블릿이 태피스트리를 통과하지 않도록 web.xml에서 매핑을 올바르게 설정하십시오.

Tapestry에는 요청/응답 파이프 라인에 적용 할 수있는 필터 개념이 있지만 T5 IOC 컨테이너 및 서비스에 액세스 할 수있는 이점이 있습니다.

http://tapestry.apache.org/tapestry5/tapestry-core/guide/request.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top