我正在研究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>
在commandButton的操作中,我从托管bean调用一个方法(Thar托管bean有其他方法,我调用它来更改页面,它们工作正常,但这种方法不起作用):
(Managed 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";
}
}
因此方法“register”工作正常并且页面更改但是方法“irRegisterView”没有导航到“registroCView”页面。
有人知道它发生了什么吗?
谢谢!
答案 0 :(得分:1)
我可以'发表评论,所以我把它写成答案。
SessionScoped
。您需要实现Serializable
,因为SessionScoped bean在一段时间后会被钝化。LayoutGeneral.xhtml
有表格吗?如果没有,则此代码将永远不会起作用,因为commandButton需要在表单中。#{comunidadBean.isRegisterView()}
。