저는 PrettyFaces 및 PrimeFaces를 사용하는 응용 프로그램을 보유하고 있습니다. URL 패턴 /#{ location : navigationBean.location }/#{ year : navigationBean.year }
을 사용하여 한 페이지에 액세스합니다.selectOneMenu의 PrettyFaces 탐색 변경
해당 페이지에서 가능한 위치 값을 포함하는 p:selectOneMenu
이 있습니다. 이 메뉴를 변경하면 같은 해와 새 위치로 페이지를 새로 고치고 싶습니다.
AJAX를 사용하여 navigationBean에서 위치를 설정 한 다음 pretty:view
(URL 매핑 ID 인 view
) 인 p:commandButton
을 눌러 테스트했습니다. 이 작동하지만 버튼을 제거 싶어요.
나는 다음을 시도했지만 슬프게도 메서드의 반환 문자열은 탐색을 수행하지 않습니다.
은 JSF :
<p:selectOneMenu value="#{navigationBean.location}">
<p:ajax listener="#{navigationBean.navigate}"/>
<f:selectItems value="#{locationBean.locations}"/>
</p:selectOneMenu>
백업 콩 :
public String navigate(AjaxBehaviorEvent event)
{
return (location != null) ? "pretty:view" : null;
}
PrettyFaces의 설정 :
<url-mapping id="view">
<pattern value="/#{ location : navigationBean.location }/#{ /\\d{4}/ year : navigationBean.year }/"/>
<view-id value="/view.xhtml"/>
</url-mapping>
멋진 감사! 'ExternalContext # redirect()'레코드는 PrettyFaces에서 작동하지 않았습니다. 서투른 코드는 실수를 대신합니다 (예제를 단순화하는 자리를 놓친 것, 제 질문이 업데이트되었습니다). – siebz0r
당신을 진심으로 환영합니다. 'ExternalContext # redirect()'는 JSF 뷰 ID 나 네비게이션 결과가 아닌 ** 실제 ** URL 만 사용합니다. PrettyFaces는 ID 또는 네비게이션 결과를 보지 않습니다. – BalusC
많이 설명합니다. 업데이트 된 답변과 일치하도록 정당성을 이유로 답변을 수정했습니다. 다시 한번 감사드립니다. – siebz0r