2011-03-24 5 views
0

여러분이 나를 도울 수 있는지 궁금합니다. 필자는 Spark 뷰 엔진을 사용하여 내 템플릿 엔진을 만들었습니다.이 엔진은 결국 Excel 파일을 만듭니다.

그러나 문제가 발생했습니다. 이 과정에서 나는 XmlDocument로 결과 스파크 출력을 푸시합니다. 이것은 내가 불법 문자가 스파크에 의해 생산되는 문제가 발생합니다. 예를 들어

<foo> 
    <bar>${Model.Something}</bar> 
</foo> 

<foo> 
    <bar>This < is a problem</bar> 
</foo> 

그래서 내가 어떻게든지 내가 불법 문자를 처리 할 수 ​​있도록 ${}를 오버라이드 (override)하는 할 수있다 바라고 있어요 생산하는 스파크에 의해 구문 분석 가져옵니다.

결과 스파크 출력이 문자열이라는 사실을 명심하십시오.

의견이 있으십니까? 사전

+0

어쩌면 스파크가하는 html 인코딩을 사용하는 것이 어떻습니까? 전역 적 구성뿐 아니라 모든 H() 함수가 있습니다. htnl 인코딩이 아닌 xml 인코딩이 필요한 경우 매크로를 만들고 함께 출력을 래핑 할 수 있어야합니다. –

+0

H 방법에 대해 들었습니다. 엔진을 사용하는 방식으로 인해 액세스 할 수없는 것 같습니다. 당신의 마르코 개념을 설명해 주시겠습니까? 결과 스파크가 문자열을 출력한다는 것을 염두에 두십시오. –

+0

스파크를 사용하는 방식을 사용하지는 않았지만 전역 페이지의 automaticEncoding 속성을 true로 설정할 수 있어야합니다. 일단 모든 출력이 HTML이어야합니다. 기본적으로 인코딩 됨. 그런 다음 출력 HTML을 인코딩하지 않으려면 특수! {} 구문을 사용할 수 있습니다. –

답변

1

Had 같은 상황에서

덕분에,이 해결 방법입니다 :

<!-- Use instead of built-in H() that only works in HTTP context (Html != null) --> 
<macro name="H" html="string">${System.Web.HttpUtility.HtmlEncode(html)}</macro> 

당신이 당신의 의견을 변경할 필요가 없습니다 이런 식으로, 당신은 단지 H()를 재정의하고 $를 {할 H (Model.Something)}. 이 모든 뷰에 영향을 미치는 있도록

은 또한 \ Shared_global.spark에이 매크로를 넣을 수 있습니다.

+0

아 나는 그 접근법을 시도했다. 그러나 결국 나는 내 자신의 추상 불꽃보기를 만들었습니다. –