0
我有兩個布爾控制渲染某些組件的,問題是,直到會話過期的變量保存有最後的狀態,我在會話如何初始化變量範圍的bean
<f:facet name="footer">
<p:commandButton action="#{personBean.report}" ajax="false" value="Publish"
rendered="#{personBean.reportMode}" icon="ui-icon-check" />
<p:commandButton action="#{personBean.saveEditing}" ajax="false" value="Save"
rendered="#{personBean.editMode}" icon="ui-icon-check" />
</f:facet>
該bean會話範圍,並具有以下屬性:
@ManagedBean(name = "personBean")
@SessionScoped
public class ReportPerson {
private boolean editMode;
private boolean reportMode;
}
豆含有這些方法是改變布爾值:
public String editPerson() {
System.err.println("Edit Missing Person");
editMode = true;
reportMode = false;
return "ReportNewPerson";
}
的問題是,這些值將一直保持到會話過期,因此部件呈現不正確
好的,我可以調用triggerReportMode()我想調用這些方法,當用戶報告一個新的人,換句話說如何顯式調用會話scoped bean的構造函數? –
構造函數在bean對象被創建時自動調用,JSF框架負責處理該構造函數。但是,我不會建議在一個bean的構造函數中初始化任何東西,在'private void init()'(方法的名稱和範圍可以由您選擇)中使用'@ PostConstruct'註釋來執行。 – Manuel
@Manuel很好的建議:)但你能解釋init方法優於構造函數的優缺點 – Freak