PrimeFaces commandButton 无法导航或更新

Posted

技术标签:

【中文标题】PrimeFaces commandButton 无法导航或更新【英文标题】:PrimeFaces commandButton doesn't navigate or update 【发布时间】:2011-06-06 01:39:13 【问题描述】:

我正在使用 Primefaces 让我的应用程序更漂亮一些。我注意到p:commandButtonh:commandButton 的工作方式不同。

p:commandButton 调用该方法,但没有其他任何事情发生。 h:commandButton 调用该方法并返回一个导航。

我在使用p:commandButton 时按下登录按钮后重定向时遇到问题。怎么处理?


我确实有一个更新参数:

<p:commandButton value="Login" action="#login.login" type="submit" update="msgs" />

【问题讨论】:

【参考方案1】:

我认为 Cagatay ment 是什么:

浏览页面:

<p:commandButton action="home.xhtml" value="Go Home"/>

有效(重定向页面):

<p:commandButton action="home.xhtml?faces-redirect=true" value="Go Home"/>

有效(重定向页面)

<p:commandButton action="home?faces-redirect=true" value="Go Home"/>

如果 .xhtml 是您在 web.xml 中定义的默认后缀:

<context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

更多信息可以在 primefaces 论坛中找到,例如 this discussion about navigation

希望对你有所帮助...

【讨论】:

【参考方案2】:
<h:commandButton 
                             styleClass="btn btn-primary-active upgrade" data-dismiss="modal" 
                             value="Upgrade Account" 
                             action="profile.do?faces-redirect=true&amp;tab=plan" 
                             oncomplete="$('#freeGiftModal').hide();" process="@this" partialSubmit="true" immediate="true"/>

我使用命令按钮导航到个人资料页面,它对我来说工作正常。

【讨论】:

您的回答与其他人的回答实际上没有什么不同,而且在某种程度上它更糟。除此之外,它不是p:commandButton,它具有正确的属性“正常工作”,它包含对h:commandButton 无效的属性,或者其他答案之一【参考方案3】:

上述解决方案都不适合我。 你仍然可以使用简单的 javascript

<p:commandButton onclick="window.location.href =home.xhtml"
                    style="height: 20px" type="button" title="title" icon="ui-icon-transferthick-e-w"/>

【讨论】:

【参考方案4】:

我也有类似的问题。

我正在使用 primefaces 和 primefaces mobile,使用时在 Firefox 中导航失败 &lt;p:commandButton&gt; 带有 ajax="false" 和 action="find.xhtml?faces-redirect=true"。

我让它在 Firefox 中也能工作的唯一方法是使用 &lt;h:commandButton&gt;:

<h:commandButton value="#msg.find" process="find" 
                     action="find.xhtml?faces-redirect=true" />

【讨论】:

【参考方案5】:

&lt;p:commandButton&gt; 需要以下条件之一才能正常工作:

update 属性列出要重新渲染的组件的 ID(用于 AJAX 请求) 属性ajax="false" 进行正常的非ajax 提交。

如果您两者都没有,则该按钮默认执行 AJAX 请求而没有 UI 反馈。

此外,当周围的 &lt;h:form&gt; 具有 enctype 属性时,我遇到了两个选项都无法正常工作的问题。

【讨论】:

如果你想要一个带导航的同步请求,你需要ajax="false"。至于update 参数,请参阅我在one of your previous questions 中的评论,您尚未回复。 对不起,刚刚忘记了-.- 至于enctype="multipart/form-data" 问题,为此您需要确保已按照用户指南中的说明配置了 PrimeFaces FileUploadFilter @BalusC: 啊,现在我知道enctype 来自哪里了——文件上传原来是不必要的,但属性仍然存在以搞砸事情......谢谢!跨度> 【参考方案6】:

如果您在进行导航并且请求是使用 ajax 完成的,则必须使用重定向。

【讨论】:

以上是关于PrimeFaces commandButton 无法导航或更新的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces Press Enter 执行commandButton

PRIMEFACES - 如何通过单击 <p:commandButton> 刷新 <p:graphicImage>?

Primefaces按Enter执行commandButton

使用commandButton Primefaces 3.4从dataTable内部提交表单时selectOneMenu null

JQuery 与 Primefaces 冲突? [复制]

Liferay:jsf portlet 和从带有视图参数的 commandButton 导航