PrimeFaces commandButton不会导航或更新

时间:2011-01-09 12:56:29

标签: jsf jsf-2 primefaces

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

p:commandButton调用方法,没有别的东西。 h:commandButton调用方法并返回导航。

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


我有更新参数:

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

6 个答案:

答案 0 :(得分:51)

<p:commandButton>需要以下其中一项才能正常运行:

  • update属性列出要重新呈现的组件的id(对于AJAX请求)
  • 属性ajax="false"以进行正常的非ajax提交。

如果您没有,则按钮默认执行没有UI反馈的AJAX请求。

此外,当周围的<h:form>具有enctype属性时,我遇到了两个选项无效的问题。

答案 1 :(得分:31)

我认为Cagatay的意思是:

导航页面:

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

Works(重定向页面):

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

Works(重定向页面)

<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 :(得分:8)

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

答案 3 :(得分:4)

我遇到了类似的问题。

我使用的是primefaces和primefaces mobile,使用时导航在Firefox中失败 <p:commandButton>使用ajax =&#34; false&#34;和action =&#34; find.xhtml?faces-redirect = true&#34;。

我在Firefox中使用它的唯一方法是使用<h:commandButton>

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

答案 4 :(得分:0)

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

namespace Data
{
    [Table("Table")]
    public class EntityName
    {
        [Key]
        public long Id { get; set; }
        public string name { get; set; }

        [NotMapped]
        public int SrNo { get; set; }
    }
}

答案 5 :(得分:0)

<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"/>

我使用命令按钮导航到个人资料页面,它对我来说很好用。