2017-10-06 1 views
0

다른 변수에서 변수를 할당하려고합니다. 내 코드는이 ctg 변수가 단지 ctgroutes['227..257-TPPMD04X02']는 실제로 문자열 자체를 평가하지 평가하고있다, 그러나이다른 변수에서 변수 할당

<#macro ctglink c rhs x y z m e b> 
    <#assign ctg> 
     <#if ctgroutes["${y}..${x}-${m}"]??>ctgroutes['${y}..${x}-${m}'] 
     <#elseif ctgroutes["${x}..${y}-${m}"]??>ctgroutes['${x}..${y}-${m}'] 
     <#else>{}</#if> 
    </#assign> 

것 같습니다.

나는 ?eval?interpret을 시도했으며, 다른 매우 고질적 인 것들을 사용하여 작동하지 않게되었습니다. {}도 문자열입니다

기본적으로 이전 함수 인 eval()처럼 작동하도록 assign 함수가 필요합니다. 데이터의 상태에서 키가 파생 된 맵의 값에 액세스하려고하므로 키를 평가하지 않고 내 맵을 쿼리하는 쉬운 방법이 표시되지 않습니다.

업데이트 :

에 의해 발생 : freemarker.core.InvalidReferenceException

  • 은 내가 elseif
  • 어느 쪽이든, 나는 <#assign ctg = ctgroutes["${y}..${x}-${m}"]!ctgroutes["${x}..${y}-${m}"]>는하지만 다음과 같은 오류가 시도
  • 거기에 포함하는 것을 잊었다 : 다음은 null 또는 누락 값을 계산했습니다 : ==> ctgroutes [ "$ {y} .. $ {x} - $ {m}"! ctgroutes [ "$ {x} .. $ {y} - $ {m} "] [템플리트"RouteCompare-WptTable.ftlh "5 행 24 열]

    나는 가능한 한 보이지 않는 그러나, 단지 빈 맵을 반환하는 null 결과를 싶습니다

    Caused by: java.lang.RuntimeException: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing: 
    ==> ctgroutes["${y}..${x}-${m}"]!ctgroutes["${x}..${y}-${m}"] [in template "RouteCompare-WptTable.ftlh" at line 5, column 24] 
    

    그러니까 기본적으로, 내 목표는 내가 1 3의 걸릴 수있는 변수를 할당 할 필요가있다 값 :

    1. ctgroutes [ "$ {} Y .. $ X는 {} - $ {m}"] //는
    2. ctgroutes [ "$ null이 아니고 가정 {X} $ {.. y} - $ {m} "] // NULL이 아닌 것으로 가정합니다
    3. 는 {} 빈지도

    그렇게 할 수있는 가장 좋은 방법은 무엇입니까 //? 난 당신이 달성하고자하는 것을 잘 이해한다면

답변

1

,이처럼 쓸 수 있습니다 :

<#assign ctg = ctgroutes["${y}..${x}-${m}"]!ctgroutes["${x}..${y}-${m}"]!{}> 

을 또한 (대신 <#assign target>...</#assign>이 변수 target에 두 태그 사이에 인쇄 출력을 캡처이므로주의 실제로 인쇄). 따라서 target은 항상 문자열 또는 마크 업 값을 저장합니다. 또한 FreeMarker 태그 및 ${} 외부의 것들은 단지 정적 텍스트이며 파싱되지 않습니다. 그래서 순진하면서도 일하는 접근 방식은 단지 #if/#elseif/#else을 사용하고 각각 안에 #assign ctg = ...을 별도로 가지고 있습니다. 그러나 표시된대로 ! 연산자를 사용하면 훨씬 많은 분류기를 만들 수 있습니다.

+0

제안이 제대로 작동하지 않아서 제 질문을 업데이트했습니다. –

+0

다시 업데이트했습니다 ... '!'{} '이 아니라'! {}'를 끝내고 싶습니다. 진짜 빈지도를 원해. – ddekany