2016-12-03 55 views
1

如何從Java Bean獲取XPages上的DataSource句柄並調用其Save()方法?如何從Java Bean獲取數據源(document1)的句柄

默認變量(ID)是'document1'。

在ServerSide JavaScript中,其變量document1.save(); //非常簡單。

但是,在JSF中,我想我必須使用組件樹facesContext來獲取它的句柄。

想法?

+1

另請參閱此問題:http://stackoverflow.com/q/40635829/785061 –

+1

,因爲我看到它來... http://stackoverflow.com/questions/9735648/save-method-on-datasource- do-not-fire-querysave-postsave-events :-) –

回答

6

document1a "NotesXspDocument" (in Domino's SSJS)的句柄,具體的Java類是com.ibm.xsp.model.domino.wrapped.DominoDocument。無需通過參數傳遞引用句柄到方法就可以獲得處理這種定義的document1的最簡單方法是解析變量。

您可以使用擴展庫的ExtLibUtil方法resolveVariable(String name),在9.0.1_v15之前,這需要FacesContext實例的第二個參數; resolveVariable(FacesContext ctx, String name)

或者,你可以跳過ExtLibUtil完全,但我更喜歡它,經常使用它,有以下幾點:

DominoDocument myDoc = (DominoDocument) FacesContext.getCurrentInstance() 
    .getApplication().getVariableResolver() 
    .resolveVariable(FacesContext.getCurrentInstance(), "document1"); 

你可以從我們正在解決這個變量的事實看,通過用戶的FacesContext實例,document1必須實際存在/可供給定的FacesContext實例訪問,以使其工作。 ExtLibUtil方法均爲are wrappers to the FacesContext variable resolver