2012-08-03 5 views
1

: 나는 백업 빈의 JSF-의 actionListener 방법이 전화를하지만, 내가 할JSF-포틀릿에서 포틀릿 URL을 만드는 방법 목표는이 코드를 사용하여 포틀릿에 URL을 생성하는 것입니다

ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext(); 
RenderResponse response = (RenderResponse)ctx.getResponse(); 
PortletURL portletUrl = response.createRenderURL(); 
String url = portletUrl .toString(); 

ClassCastException입니다. 왜냐하면 ctx.getResponse()이 대신 javax.portlet.ActionResponse을 제공하기 때문입니다.

RenderResponse은 Portlet 클래스의 doView 메소드에서 액세스 할 수 있습니다. 하지만 내 백 콩에서 어떻게 접근 할 수 있습니까?

+0

포틀릿을 사용하는 경우 동일한 위치로 리디렉션하는 이유는 무엇입니까? 또한 어떤 포틀릿 컨테이너에 편지를 쓰고 있습니까? – McDowell

+0

사용자를 포틀릿으로 유도하는 전자 메일에 링크를 삽입하고 싶습니다. WebSphere Portal 6.1을 사용하고 있습니다. – Zeemee

답변

0

나는 약간 (아주 약간) 워크로드 오버 헤드가 발생하지만, 잘 작동하는, 이제 다음 방법을 사용 :

  • 잡고 RenderResponsedoView 방법
  • 사용 PortletURL portletUrl = response.createRenderURL();에와이 객체를 저장할 포틀릿 세션 (모든 요청과 함께, 나는 알고있다).
  • 동작 수신기 메서드에서 PortletURL 개체를 검색하고 필요한 매개 변수를 추가하고 URL을 렌더링합니다.
1

사용자를 포틀릿으로 안내하는 전자 메일에 링크를 삽입하고 싶습니다. WebSphere Portal 6.1을 사용하고 있습니다.

렌더 URL은 일반적으로 포틀릿 수명주기의 해당 시점에서 사용할 수 없습니다.

  1. 당신은 일반적으로 포털에 의해 생성 된 거대한 인코딩 된 URL을 필요로하지 마십시오 URL mapping features
  2. 가 리디렉션이 두 경우에

을 수행 할 수 URL engine service와 서블릿을 사용하는 것이 좋습니다 사용을 고려; 당신은 진입 점으로 http://host/foo/bar 같은 것을 사용합니다.

프로덕션 환경에서 두 번째 접근 방식을 사용했습니다. 쉽게 찾을 수 있도록 고유 이름이 대상 페이지 및 포틀릿 인스턴스에 추가됩니다. XMLAccess 스크립트를 통해 페이지 구성에 추가됩니다. 버전 6.1에서는 관리 사용자 인터페이스를 통해 사용할 수 없습니다.

+0

XMLAccess 접근법을 알고 특정 리디렉션 서블릿을 사용하는 것뿐만 아니라 시간을 많이 사용했지만 좀 더 "솔직한"해결책을 찾고있었습니다. 내 대답에 대한 나의 최종 접근 방식을 문서화했습니다. 그럼에도 불구하고 - 고마워요! – Zeemee

+0

당신은 "버전 6.1의 관리 사용자 인터페이스를 통해 사용할 수 없다"고했는데 7.0에 새로운 것이 있습니까? – Zeemee