2011-05-01 5 views
4

는 다음 코드 나 변수에 의해 $Container의 속성을 설정하려면속도를 동적으로지도에 속성을 추가하는 방법?

$pageName = "test"; 

$Container = {}; 

있습니다. 나는 $Container.set("test", $pageName);을 시도했다. 오류는 발생하지 않았지만 $Container.test 또는 $Container.get("test");은 아무 것도 표시하지 않습니다.

어떻게 수정합니까?

+1

아. 죄송합니다. 그냥 해결책을 찾았습니다. 대신에 set을 사용하는 대신 put을 사용해야합니다. – Moon

답변

12

문제는 세트가 잘못된 방법이라는 것입니다. 당신은 풋을해야합니다. 기억해보십시오 - Velocity가 Java 메소드를 호출합니다. Map 객체에는 "set"메서드가 없습니다.

특히,

$Container.put("test", $pageName) 

지금, 하나 개 이상한 것은이 Map.put() 메소드는 부울을 반환하기 때문에이 페이지에 "true"또는 "false"를 인쇄하는 것입니다 할 수 있습니다. 그래서 나는 항상 넣어 않는 대신 페이지에 렌더링의 (당신이 다음 무시할 수있는) 다른 기준에 결과를 저장

#set($dummy = $Container.put("test", $pageName)) 

을한다.

+0

지도에서 키를 반복하고 동적으로 업데이트하려면 키의 값을 "$ value = $ arr.get ($ key)"할 때이를 수정 한 다음 "$ arr .put ($ val) "맵의 모든 엔트리가 마지막 하나의 put으로 끝나기 때문에, 모든 r 동일한 "$ val" –

0

안녕하세요, 나는 페이지에 "true"또는 "false"라고 인쇄되어 동일한 문제가 발생했으며이를 처리하는 간단한 방법이 있습니다. 내가 한 일은 좀 이상하고, Confluence를 사용했습니다. 물론 Confluence는 Velocity를 사용합니다. 벨로 시티가 다른 응용 분야에서 사용될 수 있다는 것을 이해하고 있기 때문에 언급합니다.

Confluence 사용자 매크로를 사용하여 요청 변수 인 "myPageVars"인 req 변수에서 이전에 생성 된 속성을 확인합니다. 그런 다음 put 메서드를 사용하여 매크로 매개 변수를 기반으로 새 키 - 값 쌍을 만듭니다. $! 접두사가 아니라 단지 $, 출력은 화면에 전송되지 않습니다.

... $! req.getAttribute ("myPageVars"). 넣고 ($ paramKey, $ paramValue) 는 ...

나는 속도에 다소 새로운, 그래서 나는 이것을 보장 할 수 없습니다 모든 문맥에서 작동하지만 구문 적으로 #set ($ dummy 등의 줄보다

관련 문제