2017-11-30 16 views
0

freemarker 템플릿을 사용하여 자산 게시자에 나열된 웹 컨텐츠를 표시하고 있습니다. 나는 그래서이Freemarker 템플릿의 포틀릿 네임 스페이스에 액세스하십시오.

<#attempt> 
    <#assign namespace = request["portlet-namespace"]> 
    <#recover> 
    <#assign namespace = 'undefined'> 
</#attempt> 

처럼 (항목 인쇄 등) 일부 자산 기능을 사용하려면 포틀릿 이름 공간을 할당하기 위해 노력하고있어 템플릿에서

, 인쇄 버튼을

아래 테 코드를 들고
<a href="javascript:${namespace}printPage_0();" title='Print'> 

printPageasset_print.jspf

음에하는 Liferay 자산 게시자 코드에서 사용하는 방법입니다, 모든 것이 잘 작동 : 때 브라우저에서 페이지를 검사하면서 네임 스페이스가 계산되고 네임 스페이스 변수에도 할당되었는지 확인했습니다 (UI에 오류가 표시되지 않음). 그러나,을 Liferay 포털 로그온 사용자가 전체 웹 콘텐츠를 볼 시도 할 때마다 (예. 자세히보기 클릭) 자산 게시자

Expression request["portlet-namespace"] is undefined on line 

에서 누구든지이 문제를 본 다음? freemarker 템플릿에서 포틀릿 - 네임 스페이스를 얻는 다른 방법이 있습니까?

답변

1

#attempt/#recover은 정상적인 상황에서는 복구 할 수 없으며 기본적으로 복구 할 때 오류가 기록됩니다 (운영자에게 경고가 표시됩니다). (undefinedprintPage_0(); 말이 인쇄 이유를 잘 모르겠습니다 만, 그러나 그것은 다른 문제입니다.)

<#assign namespace = request["portlet-namespace"]!'undefined'> 

: 당신은 대신 exp!default 연산자를 사용한다