JSF 2和Post / Redirect / Get?
请纠正我,如果我错了,但我想所有我的非AJAX提交应使用Post / Redirect / Get(PRG)方式,因为GET应该用于刷新/查询数据,在我的情况,我能想到的应用程序页面实际上只是对数据进行更新,然后刷新页面,所以我认为PRG适合这里。
我相信我可以使用faces-config.way来做到这一点,在那里我使用<redirect/>
,或者我可以使用return "myview.xhtml?faces-redirect=true";
现在的问题是..
有没有什么办法可以在全局configuration这个非AJAX调用/提交,自动使用faces-redirect = true,这样我的源代码就像这样简单:
return "myview";
你可以用自定义的ConfigurableNavigationHandler
来做到这一点。 这是一个开球的例子:
package com.example; import java.util.Map; import java.util.Set; import javax.faces.application.ConfigurableNavigationHandler; import javax.faces.application.NavigationCase; import javax.faces.application.NavigationHandler; import javax.faces.context.FacesContext; public class RedirectNavigationHandler extends ConfigurableNavigationHandler { private NavigationHandler parent; public RedirectNavigationHandler(NavigationHandler parent) { this.parent = parent; } @Override public void handleNavigation(FacesContext context, String from, String outcome) { if (!outcome.endsWith("?faces-redirect=true")) { outcome += "?faces-redirect=true"; } parent.handleNavigation(context, from, outcome); } @Override public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome) { if (parent instanceof ConfigurableNavigationHandler) { return ((ConfigurableNavigationHandler) parent).getNavigationCase(context, fromAction, outcome); } else { return null; } } @Override public Map<String, Set<NavigationCase>> getNavigationCases() { if (parent instanceof ConfigurableNavigationHandler) { return ((ConfigurableNavigationHandler) parent).getNavigationCases(); } else { return null; } } }
在faces-config.xml
注册如下:
<application> <navigation-handler>com.example.RedirectNavigationHandler</navigation-handler> </application>
- 如何在页面加载时在后台bean中处理GET查询stringURL参数?
- 将input文本值传递给bean方法,而不将input值绑定到bean属性
- java.lang.ClassNotFoundException:javax.servlet.jsp.jstl.core.Config
- h:outputLabel的目的和它的“for”属性
- JSF vs Facelets vs JSP
- 什么是JSF资源库,以及如何使用它?
- PrimeFacesselect器如何在update =“@(。myClass)”中工作?
- 在@ViewScoped bean之间传递一个对象而不使用GET参数
- 会话过期授权redirect在提交JSF表单时不起作用,页面保持不变