我在重定向方面遇到了一些问题。我使用primefaces和JSF 2.1。问题是JSF 2.1没有导航规则并且搜索答案我发现我可以把“faces-redirect = true”。问题是,这不起作用,我不知道为什么。浏览器一直告诉我“No se puede encontrar el casodenavegaciónconcoidentedel ID de vista'/Autenticacion/login.xhtml'paralaacción{1}'con el resultado'{2}'”有点像我没有导航“/Autenticacion/login.xhtml”用于第二个结果的第一个操作的情况。使用JSF 2.1不创建faces-config.xml文件我创建它并且我添加了该操作的规则但问题仍然存在。
这些是我的文件:
登录BEAN
@ManagedBean(name="controlLogin")
@SessionScoped
public class ControladorLogin implements Serializable{
public String logIn(){
//actions
return "index" //algo tryed index.xhtml or index?faces-redirect=true
}
PRIMEFACES COMMANDBUTTON
<p:commandButton action="#{controlLogin.logIn}" value="Loguearse" ajax="false"/>
我也尝试使用commandLink
<p:commandLink action="#{controlLogin.logIn}" value="Loguearse" ajax="false"/>
FACES-CONFIG.XML //如果不是我必须删除它
<navigation-rule>
<from-view-id>/Autenticacion/login.xhtml</from-view-id>
<navigation-case>
<from-action>#{controlLogin.logIn}</from-action>
<from-outcome>index</from-outcome>
<to-view-id>/index.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
所以如果有人可以帮我做这个重定向...谢谢!
答案 0 :(得分:4)
的确,在 JSF 2.x 中,您不必定义导航规则。您根本不需要faces-config.xml
,只是在一些注释未涵盖的特殊情况下(例如,自定义ExceptionHandlerFactory
)。
使用return "index?faces-redirect=true"
完全没问题。 faces-redirect=true
表示您redirect
从一个xhtml到另一个xhtml而不是默认 forward
。
Difference between forward and redirect
在这种情况下,请确保您的index.xhtml
页面与您尝试访问它的页面位于同一目录中。
否则,如果index
页面位于另一个目录中,那么您必须在开始时使用正斜杠/
指定绝对路径这个:"/indexFolder/index?faces-redirect=true"
。