我正在 JSF 2.2 中处理一个简单的项目,但在某些页面之间导航时遇到了一些问题。在项目中,我有一个通用模板,所有视图都是该通用模板的模板客户端。
这是我遇到麻烦的观点:
<h:body>
<ui:composition template="./LayoutGeneral.xhtml">
<ui:define name="content">
<p:commandButton value="Registrar Comunidad" action="#{comunidadBean.irRegisterView}"/>
</ui:define>
</ui:composition>
</h:body>
在命令按钮的操作中,我从托管 bean 调用了一个方法(Thar 托管 bean 有其他方法,我调用它们来更改页面,它们工作正常,但此方法没有):
(管理豆)
@ManagedBean
@SessionScoped
public class ComunidadBean {
private String idComunidad;
private String idPresidente;
private String calle;
private int numero;
private int nVecinos;
@EJB
private ComunidadDAO ejb;
public String register(){
if(ejb.realizaRegistro(this)){
return "principalView";
} else{
FacesMessage fm = new FacesMessage ("No se pudo registrar");
FacesContext.getCurrentInstance().addMessage("msg", fm);
return null;
}
}
public String irRegisterView(){
return "registroCView";
}
}
因此,方法"注册"工作正常,页面更改,但方法"irRegisterView"无法导航到"registroCView"页面。
有人知道发生了什么吗?
谢谢!
我可以发表评论,所以我写这个作为答案。
- 我看你的豆子
SessionScoped
.您需要实现Serializable
因为 SessionScoped Bean 在一段时间后处于钝化状态。 - 你有
LayoutGeneral.xhtml
表格吗?否则,此代码将永远不起作用,因为命令按钮需要位于窗体中。 - 为什么将该方法称为属性?在 JSF 2.2 和 EL 2.3 中,可以调用如下方法:
#{comunidadBean.isRegisterView()}
. - 单击按钮时是否引发一些异常?如果是,请粘贴堆栈跟踪。