我写了一个jsf应用程序,这个应用程序将数据插入到mysql数据库中,并在另一个页面中显示一些插入的细节。
我成功地将值插入数据库,但即使在编写导航规则后也无法重定向到其他页面。
我的行动代码
<div align="center"><p:commandButton label="Submit" action="#{userData.add}" align="center" ajax="false" /></div>
导航规则
<managed-bean>
<managed-bean-name>UserData</managed-bean-name>
<managed-bean-class>userData.UserData</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<display-name>home.xhtml</display-name>
<from-view-id>/home.xhtml</from-view-id>
<navigation-case>
<to-view-id>/badge.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
如果我写了face-redirect,那么它显示错误,或者如果我将动作写入另一页,那么它不会将值插入数据库。
答案 0 :(得分:2)
停止阅读JSF 1.x资源并删除<managed-bean>
中所有JSF 1.x样式<navigation-rule>
和faces-config.xml
条目。
适用于action="#{userData.add}"
的JSF 2.x方法如下:
@ManagedBean
@ViewScoped
public class UserData {
public String add() {
// ...
return "/badge.xhtml?faces-redirect=true";
}
}
不需要额外的XML混乱。也没有动作听众。
可以在our JSF wiki page中找到指向JSF 2.x教程/书籍的链接。