【问题标题】:JSF2.0 PrimeFaces Navigation ProblemJSF2.0 PrimeFaces 导航问题
【发布时间】:2011-06-25 21:58:56
【问题描述】:

我现在也遇到导航问题。我有 2 个数据表,一个位于常规的 facelets 页面中,另一个位于对话框中。 两者都有相同的代码:

<p:commandButton
   value="Show car"
   ajax="false"
   action="showCar?faces-redirect=true">
   <f:setPropertyActionListener value="#{car}" target="#{carBean.car}" />
</p:commandButton>

我也尝试添加 process="@this" 但没有成功。

问题是,虽然导航适用于 facelets 页面内的 commandButton,但它不适用于对话框内的按钮。点击后似乎重新加载了当前页面。 将其替换为 a 也无济于事。

以前有没有人经历过这样的事情?这可能是对话框的问题吗?

感谢和最好的问候, 罗伯特

【问题讨论】:

  • Firebug 对于找出正在发生的事情非常有用。在 ajax 响应中查找 validationFailed=true。在这种情况下,您会发现您的动作侦听器没有被调用。我试图做和你几乎一样的事情,然后就放弃了,而是将表单从对话框移到另一个页面。如果/当有人为 p:dialog 中的表单提出可行的使用模式时,我可能会重新审视它。

标签: redirect dialog jsf-2 navigation primefaces


【解决方案1】:

忘记我之前的回答,我没有仔细阅读你的问题。可能发生的情况是您的 &lt;f:setPropertyActionListener&gt; 呼叫失败。如果它(静默)失败,那么该错误将导致 JSF 自动导航回同一页面。

将此添加到您的页面某处,以便您可以看到框架可能提供的任何有用的错误 FacesMessages:

<p:messages
    id="messagesForDebugging"
    showDetail="true"
    autoUpdate="true" />

autoUpdate 将导致它刷新由全局 Ajax 请求生成的消息。

您可能还想在您的carBean.setCar() 方法中添加一个日志语句,以确保它成功设置了值。如果失败,那么您可能需要为 Car 值提供自定义转换器?

【讨论】:

  • 感谢您的回答 Jim,但 ajax="true" 是默认行为,它会阻止默认的 JSF 导航发生,因此对我不起作用。但我非常感谢您的回复!
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 2011-12-07
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多