我正在使用Primefaces让我的应用程序更漂亮一点。我注意到p:commandButton
和h:commandButton
的工作方式不同。
p:commandButton
调用方法,没有别的东西。 h:commandButton
调用方法并返回导航。
使用p:commandButton
时按下登录按钮后我遇到重定向问题。如何处理?
我有更新参数:
<p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" />
答案 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&tab=plan"
oncomplete="$('#freeGiftModal').hide();" process="@this" partialSubmit="true" immediate="true"/>
我使用命令按钮导航到个人资料页面,它对我来说很好用。