我有 2 个 jsf 页面,每个页面都有一个托管 bean。我正在从第二页导航到第一页,并且想要销毁其中的实体对象。我的问题是,在我将其设置为 null 之后,它仍然会进入getDetails
创建新实体的方法。
getDetails
退出此页面时如何防止它进入该方法?我怎样才能正确地摧毁这个实体?我做错了吗?
这是我的代码:
public class page2MB {
@EJB
private page2SessionBean page2SessionBean;
private Page2 page2;
public page2MB() {
}
public Page2 getDetails()
{
if(page2 == null)
{
Map requestParams = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
page2 = new Page2();
page2.setPage2PK(new Page2PK(Short.parseShort((String)requestParams.get("param1")),
Short.parseShort((String)requestParams.get("param2"))));
page2 = page2SessionBean.find(page2);
}
return page2;
}
public String exit()
{
try
{
page2 = null;
return "page1";
}
catch(Exception exp)
{
exp.printStackTrace();
return "";
}
finally
{
}
}
}
page2.xhtml:
<f:view>
<h:form>
<h:panelGrid columns="2">
<h:inputText id="page2PKfield1" value="#{page2MB.details.page2PK.field1}"/>
<h:inputText id="page1MBfield1" value="#{page1MB.details.field1}"/>
<h:inputText id="page2MBfield2" value="#{page2MB.details.page2PK.field2}"/>
<h:inputText id="field2Desc" value="#{page2MB.details.field2Desc}"/>
</h:panelGrid>
<h:commandButton id="exit" value="יציאה" action="#{page2MB.exit}" immediate="true"></h:commandButton>
</h:form>
</f:view>
提前致谢。