将非托管bean绑定到xPage的最佳方法?

时间:2013-04-18 08:34:12

标签: xpages

将非托管bean绑定到xPage的最佳方法是什么?我们在java中使用xPages控制器类,并且希望将某些类限制为特定的xPage而不使用faces-config中的托管bean。

尝试使用dataContext和一些方法工作,但是我们无法使用resolveVariable方法获取文档数据源。它总是返回doc = null。与托管bean相同的java类返回正确的数据源。

有没有更好的方法将bean连接到特定的xPage?

1 个答案:

答案 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() + ")");
    }