首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Primefaces数据列表+ PrettyFaces

Primefaces数据列表+ PrettyFaces
EN

Stack Overflow用户
提问于 2012-06-01 06:13:46
回答 1查看 532关注 0票数 1

如何在dataList项目链接中使用PrettyFaces?

代码语言:javascript
复制
<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>

这是我的漂亮配置:

代码语言:javascript
复制
<url-mapping id="goCity">
    <pattern value="/#{cityId:city.id}/#{city:city.city}" />
    <view-id value="/page.xhtml" />
</url-mapping>

我得到了这个错误:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-02 16:48:39

您的设置看起来完全正确。在这里,<p:dataList>似乎并不完全像<h:dataTable><ui:repeat>那样工作。

您可以尝试将组件替换为如下所示:

代码语言:javascript
复制
<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>

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10842025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档