2011-02-25 3 views
1

나는 ftl 파일을 보내고 있습니다. 통지 이메일을 보내고 있습니다. 이 메일의 제목을 변경해야합니다. 그래서, 나는 주제를 바꾸고 그 안에 URL을 전달할 수있었습니다. 하지만 내 요구 사항은 URL에서 특정 매개 변수를 전달하는 것입니다. 이 파일 내에 자바 스크립트 나 자바 스크립트 함수를 작성할 수 있습니까?ftl 파일에 자바 스크립트 작성

<@s.document "${emailDigestBean.containerHtmlUrl}"> 
    <#if u.isHtml()> 
    <h1>${emailDigestBean.localizedText}</h1> 
    <#if emailDigestBean.briefDesc??> 
    <p id="message">${emailDigestBean.briefDesc}</p> 
    <p>Added By Me:${emailDigestBean.containerHtmlUrl}</p> 
    </#if> 

$ {emailDigestBean.containerHtmlUrl가} .... 내가 구문 분석 할 URL이 포함되어 여기

코드의 조각이다.

미리 감사드립니다.

답변

0

설정이 무엇인지 알 수 없습니다. 어떻게 Freemarker 템플릿을 생성합니까? Servlet에서 호출되고 있습니까?

내 선호도는 매개 변수를 전달하기 전에 URL을 구문 분석하는 것, 즉 템플릿 코드가 아닌 Java 코드로 수행하는 것이 좋다고 생각합니다. Servlet API는 이미 사용중인 쿼리 문자열을 이미 구문 분석 했으므로 다시 쿼리 할 필요가 없습니다.

예를 들어, 귀하의 코드는 다음과 같이 보일 수 있습니다 :

Map params = new HashMap(); 
params.put("emailDigestBean", emailDigestBean); 

FreemarkerTemplateUtils.processTemplateIntoString(freemarkerConfig.getTemplate("template.ftl",params); 

이 서블릿 내에서 호출되어 가정을, 당신은에 추가 할 수 있습니다 템플릿 내에서 다음

params.put("param", request.getParameter("paramName")); 

그리고 당신 $ {param} 또는 당신이 무엇이라고 부르는지를 사용하여 그것에 접근 할 수 있습니다.

+0

실제로 설정이 무엇인지 전혀 알지 못합니다. 나는 이것이 메일을 생성하는 ftl이라는 것을 알고 URL을 파싱하고 매개 변수를 얻어야한다. 파일 자체에서 구문 분석을 수행 할 수있는 방법이 있습니까? – Nisha

+0

URL을 템플릿에 추가하려면 템플릿 자체를 호출하는 코드를 수정해야합니다. 어쨌든 Java 코드를 수정해야 할 필요가있을 것입니다. 세부 사항이 없으면 말하기가 불가능합니다. –

0

phil이 아래에서 지적했듯이 설정을 알지 못하면 질문에 답변 할 수 없습니다. Freemarker 템플릿 (ftl)은 freemarker 엔진에 의해 처리되어 텍스트 출력을 생성합니다. 처리 중에 엔진은 템플릿에서 참조 할 수있는 일부 데이터 (일반적으로 데이터 맵)에 액세스 할 수 있습니다. 코드의 $.....은 데이터에 대한 참조입니다.

문제를 해결하려면 ftl에서 새 데이터에 액세스해야합니다. 그래서 누군가 먼저 가방을 넣어야합니다. 그러면 ftl을 변경하여 액세스 할 수 있습니다. 설정을 살펴보고 누가 데이터 맵에 항목을 추가하는지 확인하십시오. 그렇게 할 수 없다면, 이미 가방에있는 bean에 속성으로 속성을 추가 할 수 있는지 확인하십시오 (emailDigestBean은 이미 가방에 있습니다).

관련 문제