我在重定向方面遇到了一些问题。我使用primeface和JSF 2.1。问题是JSF 2.1没有导航规则,搜索答案时我发现我可以输入“faces-reend=true”。问题是这不起作用,我不知道为什么。浏览器一直告诉我“No se puide entrar el caso de navegaciónIDde vista'/Autenticacion/login. xhtml'para la ación{1}'con el结果tado'{2}'”类似于我没有导航案例为“/Autenticacion/login.xhtml”的第一个操作和第二个结果。使用JSF 2.1不会创建faces-config. xml文件,我创建了它,并为该操作添加了规则,但问题仍然存在。
这些是我的文件:
登录豆
@ManagedBean(name="controlLogin")
@SessionScoped
public class ControladorLogin implements Serializable{
public String logIn(){
//actions
return "index" //algo tryed index.xhtml or index?faces-redirect=true
}
主界面命令按钮
<p:commandButton action="#{controlLogin.logIn}" value="Loguearse" ajax="false"/>
我也尝试使用命令链接
<p:commandLink action="#{controlLogin.logIn}" value="Loguearse" ajax="false"/>
如果不需要,我CAN删除它
<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>
所以如果有人能帮我做这个重定向…谢谢!!
事实上,在JSF 2. x中,您不必定义导航规则。您根本不需要faces-config.xml
,只是在一些没有注释的特殊情况下(例如自定义ExceptionHandlerFactory
)。
使用返回"index? faces-reDirect=true"
完全没问题。faces-reDirect=true
意味着您将
从一个xhtml重定向到另一个xhtml,而不是默认的转发
。
转发和重定向的区别
在这种情况下,只需确保您的index. xhtml
页面与您尝试访问它的页面位于同一目录中。
否则,如果index
页面位于另一个目录中,则必须使用正斜杠/
指定绝对路径,如下所示:"/indexFolder/index? faces-reDirect=true"
。