Reputation: 6970
How can i use PrettyFaces in a dataList item link ?
<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>
And this is my pretty-config:
<url-mapping id="goCity">
<pattern value="/#{cityId:city.id}/#{city:city.city}" />
<view-id value="/page.xhtml" />
</url-mapping>
I got this error:
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)
Upvotes: 1
Views: 548
Reputation: 5668
Your setup looks absolutely correct. It seems like <p:dataList>
doesn't work exactly like <h:dataTable>
or <ui:repeat>
here.
You could try to replace the component with something like this:
<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>
Or with <pretty:link>
instead of <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>
Upvotes: 1