将非托管bean绑定到xPage的最佳方法是什么?我们在java中使用xPages控制器类,并且希望将某些类限制为特定的xPage而不使用faces-config中的托管bean。
尝试使用dataContext和一些方法工作,但是我们无法使用resolveVariable方法获取文档数据源。它总是返回doc = null。与托管bean相同的java类返回正确的数据源。
有没有更好的方法将bean连接到特定的xPage?
答案 0 :(得分:2)
您可以在beforePageLoad
事件中将Java控制器与XPage连接:
<xp:this.beforePageLoad><![CDATA[#{javascript:
viewScope.controller = new com.yourdomain.controller.MyController();
controller.beforePageLoad()}]]>
</xp:this.beforePageLoad>
然后您可以使用EL调用控制器的方法:
#{controller.save}
或者您可以将某些事件与您的控制器连接:
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
afterPageLoad="#{controller.afterPageLoad}"
您的控制器可以访问文档数据源。
public void save() throws Exception {
DominoDocument doc = (DominoDocument) JsfUtil.resolveVariable("currentDocument");
System.out.println("save(" + doc.getDocument().getUniversalID() + ")");
}