2013-08-25 1 views
0

/효과가 무시됩니다 및 세터.전화는 나는 다음과 같은 코드를 가지고하는 Liferay JSF 2.0 포틀릿을

Eclipse의 디버거에서이 코드를 추적하고 ActionResponse 인스턴스의 _publicRenderParameters HashMap 내용을 검사하면 userId 및 org 매개 변수가 올바르게 설정되었음을 알 수 있습니다. 다음 줄을 살펴보면 registrationToken에 올바른 숨겨진 입력 값이 들어 있고 마지막 setRenderParameter() 호출이 수행되고 있음을 알 수 있습니다.

다음은 Bizarro World 부분입니다. 마지막 setRenderParameter() 호출 후 ActionResponse의 _publicRenderParameters HashMap에 대한 업데이트가 전혀없고 토큰이 params에 설정되지 않은 채로 유지됩니다.

다른 매개 변수를 저장하는 데 사용한 세션 범위의 빈을 통해 토큰을 전달하는 것부터 여러 가지 방법으로 시도해 보았습니다. (같은 ActionResponse 참조를 여전히 사용하는) 코드 흐름에서 나중에 setRenderParameter()를 호출합니다. "token"이 어떤 종류의 예약 된 이름이거나 뭔가 다른 경우에 대비하여 호출시 다른 키 이름 ("registrationToken")을 사용하는 경우. 실제로지도를 업데이트하기위한 마지막 호출을받은 사람이 없습니다.

나는 또한 내가 생각할 수있는 관련 용어의 모든 조합을 봤지만이 특별한 문제는 발견하지 못했다.

이 문제가 발생한 사람이 있습니까? ActionResponse의 param map이 처음 두 번의 호출에서는 정상적으로 업데이트되지만, 마지막 두 번째 호출에서는 정상적으로 업데이트되지 않습니다.

= 조 =

답변

1

당신이 포틀릿의 로그인 유형을 개발하려는 경우, 당신은 jsf2-login-portlet 데모에서 볼 수도 있습니다.

0

오늘 아침 팀원 중 한 사람과 연락을 취한 후 바로 문제를 보았습니다. 디버깅 할 때 ActionResponse의 _public_render_params 맵에 사용자 ID와 조직 값이 설정되어 있음을 알았습니다. 그것은 실제로 열쇠였습니다. 내 토큰 값 으로 설정되었지만 잘못된 멤버 변수가 있습니다. 이 값은 ActionResponse의 _params 맵에서 개인 렌더링 매개 변수로 설정되었습니다.

실제 수정 사항은 public render param 정의를 portlet.xml에 추가 한 다음 해당 순서대로 다음 포틀릿과 함께 새로운 포틀렛 렌더링 매개 변수를 지원하도록하는 것입니다. 내가 필요한 <portlet-app> 태그에서

:

<public-render-parameter> 
    <identifier>registrationToken</identifier> 
    <qname xmlns:x="http://liferay.com/pub-renderparams">x:registrationToken</qname> 
</public-render-parameter> 

그런 다음 관련 <portlet> 태그에 나는 추가했다 :

<supported-public-render-parameter>registrationToken</supported-public-render-parameter> 

나는 "registrationToken"보다는 토큰 단지 명확성을 위해 사용했다. 일단 완료되면 setRenderParam() 호출을 업데이트하여 "token"대신 "registrationToken"키를 사용하고 모든 것이 예상대로 작동하기 시작했습니다.

관련 문제