2009-06-30 4 views
2

나는 다른 사용자의 권한을 변경할 수있는 사람을 제한하기 위해 사용자가 관리자로 로그인했는지 여부를 확인하는 코드를 작성했지만 if 태그는 사실이 아닙니다. 올바른 데이터가 표시되는지 확인했으나 지금까지 찾지 못한 것이 해결책을 제시하지 못했습니다.Grails g : if와 문자열 비교

<g:if test="${session.userPermissions == 'Administrator'}"> 
    <g:select id="permissions" name="permissions" from="${userInstance.constraints.permissions.inList}" value="${userInstance.permissions}" ></g:select> 
</g:if> 
<g:else> 
    ${userInstance.permissions} 
</g:else> 
+1

D? 이름은 어떻게 든 하나의 String이 아니라 목록임을 제안합니다. –

+0

문자열로 설정하고 있지만 목록으로 변환 중일 수 있습니다. 나는 그것을 조사해야 할 것이다. – Noaki

+0

이것은 목록입니다. session.userPermissions [0]을 사용하여 문자열에 액세스 할 수 있습니다. 하지만 그것을 할당 할 때 문자열 데이터 형식을 사용하고 있습니다. – Noaki

답변

1

그것은 끝내 쿄코

내가 사용자의 로그인 정보를 얻을 수있는 기준을 사용 끝납니다. 조건은 사용자 변수 목록을 반환합니다. 내가 설정하고 있었다. session.userPermissions = user.permissions

Groovy에서는 모든 목록 요소의 속성에 액세스하여이를 새 목록으로 가져올 수 있습니다 (아래 예 참조). 이것은 내 세션에서 목록 변수를 제공했다. 정말 멋진 기능이지만, 이와 같은 사고에서 쉽게 찾을 수있는 기능은 아닙니다.

groovy> def demo = [] 
groovy> demo[0] = [a:1, b:2] 
groovy> demo[1] = [a:3, b:4] 
groovy> demo[2] = [a:5, b:6] 
groovy> demo.a 

Result: [1, 3, 5] 
+2

네, 실제로이 구문은 demo.collect의 바로 가기입니다. {it.a}. 이것은 list 요소의 메소드 호출에도 적용됩니다. list * .myMethod()는 원래 목록의 모든 요소 (소위 확산 점 연산자)가 호출 된 myMethod()의 반환 값을 포함하는 목록을 반환합니다. collect-equivalent는 다음과 같습니다 : list.collect {it.myMethod()} –

+0

이것은 버그를 추적하기 힘들 수 있습니다 ... hhmmm 훌륭하지는 않습니다. – Chii

+0

Groovy (GPath라고도 함)의이 기능을 정말 싫어합니다. 'demo * .a '와 똑같은 일을 할 수 있습니다. 추가 속성을 입력하여 속성에 액세스하거나 속성을 수집하는지 여부를 분명히 알 수 있습니다. –

8

시도 "자바"문자열 방법 : 개체의 어떤 유형의 session.userPermissions에 저장됩니다

<g:if test="${session.userPermissions.equals('Administrator')}"> 
.... 
</g:if> 
+0

이 제안에 감사드립니다. 나는 .gsp 파일에서 똑같은 문제를 겪고 있었는데, 두 문자열 (또는 적어도 문자열이라고 생각했다) x와 y는 $ {x}와 똑같이 표시 할 것이고 % {y}는 == 테스트를 실패 할 것이다. String.equals를 사용하면 문제와 신비가 해결되었습니다. –

+0

감사합니다, 나를 위해 일합니다 :) – zack