2012-11-11 3 views
0

ixlTest이라는 속성 개체에 map이 있습니다. 이지도에는 내 페이지의 템플릿 파일에서 후자의 개체를 바인딩하는 데 필요한 다른지도가 들어 있습니다. 꽤 복잡한 객체 그래프. 네이티브 태피스 트리 5 v5.3.6 맵 바인딩

나는 기본적으로이 작업을 수행하기 위해 노력하고있어 :

ixlTest.parameterGroups{'testOptions'}{'serverIp'}.value 

ixlTest 내 페이지 parameterGroups의 속성 오브젝트 것은 ixlTest의 멤버 변수입니다. 이 변수는 map입니다. parameterGroups 내가 내 템플릿 파일 내에서 바인드해야 value라는 변수를 가진 개체 인 키 serverIp 또 다른 map이있는 키 testOptions에 항목이 있습니다.

나는 다른 라이브러리가없는 태피스 트리의 네이티브 지원을 사용해야하며, 그 길을 따라 갔기 때문에 메서드를 사용하지 않아도되고 꽤 비효율적이었다.

감사합니다.

답변

1

페이지의 Java (또는 Groovy 또는 Scala) 코드에 이것을 넣고 템플릿에서 참조하는 것이 더 나을 때가 있습니다.

Tapestry의 속성 표현식 구문에는지도 참조 해제를위한 연산자가 없습니다. 그러나 get() 메소드를 호출 할 수는 있지만 Tapestry가 제네릭을 파악하는 데 한계가 있습니다. 즉, 누락 된 속성에 대한 오류가 발생할 수 있습니다.

나는대로이 코드 것 : 템플릿에

value="testValue" 

및 :

public String getTextValue() { 
    return ixlTest.getParameterGroups().get("testOptions").get("serverId").getValue(); 
} 

를 클래스에.

즉석에서 Java 코드를 변경할 수 있기 때문에 복잡한 표현식을 템플릿에 넣는 것보다 낫습니다. 자바 측에서 리팩토링하면 IDE가 템플릿을 인식하지 못하는 템플릿 내부에서 복잡한 표현을 깰 수있다.

관련 문제