涉及托管bean。
@Named
@ViewScoped
public class Bean implements Serializable {
public Bean() {}
private static final long serialVersionUID = 1L;
public String navigate() {
System.out.println("navigate() invoked.");
// This method carries some logic here.
return "/ContextPath/location/page.xhtml?faces-redirect=true";
}
}
现在,使用带有action
的命令组件应该重定向到所述资源。
<h:form>
<p:commandButton value="Submit" action="#{bean.navigate}"/>
</h:form>
但是,无论ajax
设置为false
还是使用其他命令组件<p|h:commandLink>
,这都是不真实的。在任何一种情况下都会像往常一样调用action方法,但它不会执行导航。
直接用导航案例结果替换操作方法,例如,
<p:commandButton value="Submit"
action="/ContextPath/location/page.xhtml?faces-redirect=true"/>
没有任何区别。
这真的是期待吗?
这是一个非常基本的问题,但我在其他已经提出的问题中找不到至少直接的答案。
使用Mojarra 2.2.12和PrimeFaces 5.2(社区捆绑)。