2017-11-20 7 views
0

테이블 행을 생성하기 위해 '루프'명령을 사용하여 "동적"으로 만드는 템플릿 파일이 있습니다.루프 처리 및 자바 맵에서 데이터 추출

또한 HashMap을 전달하여 테이블에 데이터를 채우지 만 제대로 작동하지 않습니다.

tokens.put("40_10_Off", "WORKS!"); 
template.process(tokens, writer); 

'과정을'실행이 테이블을 생성하고

${40_10_Off} 

을 넣어하지만 :

<html> 
<p> 
    <#list ['10', '20'] as sampleRate> 
     <table>   
     <#list ['40'] as inputRange> 
     <#list ['Off'] as dcFrequency> 
      <#assign templateToken = inputRange + "_" + sampleRate + "_" + dcFrequency> 
      <tr valign=top> 
      <td>${templateToken}</td> 
      </tr> 
     </#list> 
     </#list> 
     </table> 
    </#list> 
</p> 
<p><i>${.now?date}</i></p> 
</body> 
</html> 

이것은 자바 코드는 다음과 같습니다

는 템플릿입니다 자바 맵에서 키를 선택하지 않습니다 ...

내가 만든 변수의 값을 JAVA 코드에서 전달한지도에서 추출하려면 어떻게해야합니까?

+0

당신이 당신이 점점 오류를 제공 할 수 있습니까? 또는 적어도 '작동하지 못하게 함'을 지정하십시오. – Lino

+0

죄송합니다 ... 잘못된 것을 추가했습니다. – Shvalb

+0

예외가 없으면 테이블을 만들지 만 문자열을 맵의 값으로 대체하지 않습니다. – Shvalb

답변

1

: 사용하여 교체 다음의이 "ToBeReplacedToken을"이름을하자, (예를 들어 {} 사이 "40_10_Off"를, 또는 무엇이든) 및 ${templateToken}으로 FreeMarker에 templateToken의 값을 출력하면됩니다. 당신이 어떤 이름을 가진 데이터 모델에 tokens을 넣으면,의는 "tookens"을 가정 해 봅시다 :

tokens.put("40_10_Off", "WORKS!"); 
Map<String, Object> dataModel = new HashMap<>(); 
dataModel.put("tokens", tokens); 
template.process(dataModel, writer); 

다음 템플릿에서 ${tokens[templateToken]}를 작성할 수 있습니다. 당신은 데이터 모델 (원래의 예에서와 같이) 그 자체로 tokens을 사용하여 선호하는 경우에, 당신은 쓸 수 있습니다 :

${.vars[templateToken]} 
+0

좋은 대답 감사합니다! 불행히도, 저를 위해 일하지 않는 무언가. $ {tokens}을 인쇄하려고해도 예외가 발생합니다 : 예외 = FreeMarker 템플릿 오류 : "$ {...}"내용 : 문자열 또는 자동으로 문자열 (숫자, 날짜 또는 boolean). 그러나 이것은 extended_hash (ftDefaultMapAdapter에 래핑 된 HashMap)로 평가됩니다. – Shvalb

+0

나는 당신이 제안한 정확히 자바 스크립트를 실행하고 있습니다. 아마도 "templateToken"을 평가할 수 없습니다. <# assign templateToken ...> – Shvalb

+0

그런데 "dataModel"맵 내부에 "토큰"을 만드는 무언가를 추가하는 것이 확실하지 않습니다. – Shvalb

0

당신은 당신이 대체 할 값을 알 수있는 첫 번째 필요

String.replace("ToBeReplacedToken",tokens.get("ToBeReplacedToken")); 
+0

이 코드 줄은 어디에 넣어야합니까? – Shvalb

+0

실례를 들어 주실 수 있습니까? 고맙습니다! – Shvalb

+0

죄송합니다. freemarker에 대해 얘기하고 있다는 것을 눈치 채지 못했습니다. 태그를 살펴 봤는데, @ ddekany의 대답이 더 유용 할 것 같아요. – Ghayth