2012-05-31 1 views
0

어떻게 데이터리스트 아이템 링크에 PrettyFaces를 사용할 수 있습니까?Primefaces 데이터리스트 + PrettyFaces

<url-mapping id="goCity"> 
    <pattern value="/#{cityId:city.id}/#{city:city.city}" /> 
    <view-id value="/page.xhtml" /> 
</url-mapping> 

나는이 오류가 발생했습니다 :

com.ocpsoft.pretty.PrettyException: PrettyFaces: Exception occurred while processing <goCity:#{city.id}> for URL </144/London> 
com.ocpsoft.pretty.faces.beans.ParameterInjector.injectPathParams(ParameterInjector.java:96) 
com.ocpsoft.pretty.faces.beans.ParameterInjector.injectParameters(ParameterInjector.java:54) 
com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(PrettyPhaseListener.java:98) 
com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:107) 
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118) 
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:110) 

javax.el.PropertyNotFoundException: Target Unreachable, identifier 'city' resolved to null 
org.apache.el.parser.AstValue.getTarget(AstValue.java:98) 
org.apache.el.parser.AstValue.getType(AstValue.java:82) 
org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:176) 
com.ocpsoft.pretty.faces.util.FacesElUtils.getExpectedType(FacesElUtils.java:50) 
com.ocpsoft.pretty.faces.beans.ParameterInjector.injectPathParams(ParameterInjector.java:79) 
com.ocpsoft.pretty.faces.beans.ParameterInjector.injectParameters(ParameterInjector.java:54) 
com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(PrettyPhaseListener.java:98) 
com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:107) 
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118) 
com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:110) 

답변

1

귀하의 설정이 절대적으로 올바른 보이는

<p:dataList value="#{mybean.cities}" var="city"> 
    <h:link outcome="pretty:goCity"> 
     TEXT 
     <f:param name="city" value="#{city.city}" /> 
     <f:param name="cityId" value="#{city.id}" /> 
    </h:link> 
</p:dataList> 

는 그리고 이것은 내 꽤-설정입니다. <p:dataList>은 정확히 <h:dataTable> 또는 <ui:repeat>처럼 작동하지 않습니다.

당신은 이런 일에 구성 요소를 대체하기 위해 시도 할 수 :

<ul> 
    <ui:repeat var="city" value="#{mybean.cities}"> 
    <li> 
     <h:link outcome="pretty:goCity"> 
     TEXT 
     <f:param name="city" value="#{city.city}" /> 
     <f:param name="cityId" value="#{city.id}" /> 
     </h:link> 
    </li> 
    </ui:repeat> 
</ul> 

또는 <pretty:link> 대신 <h:link>을 가진 :

<ul> 
    <ui:repeat var="city" value="#{mybean.cities}"> 
    <li> 
     <pretty:link mappingId="goCity"> 
     TEXT 
     <f:param name="city" value="#{city.city}" /> 
     <f:param name="cityId" value="#{city.id}" /> 
     </pretty:link> 
    </li> 
    </ui:repeat> 
</ul>