XPages EventHandler actionListener with this.action - actionListener不会触发

时间:2016-12-02 05:46:50

标签: jsf xpages actionlistener

我正在研究XPage。

我有一个适用于ContractsBean的managedBean。在ContractsBean中,我有一个方法saveContract()。

在XPage上我还有一个数据源绑定到另一个NSF中的文档,它的变量是标准的#{document1}。

部分页面数据来自NSF文件以及来自DB2的页面的其他部分。

我正在努力保存页面,一些数据发送到NSF,另一些发送到DB2。我首先使用NSF,并使用document1成功保存数据。

然后我添加了一个ActionListener来调用事件监听器,并且事件监听器没有触发。我删除了save document1并且ActionListener正常触发。

我是否不能在同一个事件处理程序中同时拥有xp:this.action和actionListeners?

任何JSF大师,这看起来都很熟悉......

<xp:button value="Submit" id="btnSubmit"
                styleClass="btn green pull-left">
                <xp:eventHandler event="onclick" submit="true"
                    refreshMode="norefresh" immediate="true">
                    <xp:this.action>
                        <xp:saveDocument var="document1"></xp:saveDocument>
                    </xp:this.action>
                    <xp:this.actionListeners>
                        <xp:actionListener
                            type="com.page.listeners.SaveContractListener">
                        </xp:actionListener>
                    </xp:this.actionListeners>
                </xp:eventHandler>

            </xp:button>

现在,如果我这样做,请删除它起作用的xp.this.action,动作侦听器将触发。

<xp:button value="Submit" id="btnSubmit"
                styleClass="btn green pull-left">
                <xp:eventHandler event="onclick" submit="true"
                    refreshMode="norefresh" immediate="true">

                    <xp:this.actionListeners>
                        <xp:actionListener
                            type="com.page.listeners.SaveContractListener">
                        </xp:actionListener>
                    </xp:this.actionListeners>
                </xp:eventHandler>

            </xp:button>

如果我不能在EventHandler中同时使用,那么使用ActionListener来获取document1的句柄(如何?)并将其保存在我的actionListener中的替代方法是什么?

1 个答案:

答案 0 :(得分:3)

我使用此标记使其工作

<xp:button value="Submit" id="btnSubmit"
                styleClass="btn green pull-left">
                <xp:eventHandler event="onclick" submit="true"
                    refreshMode="complete" disableValidators="true" immediate="true">
                    <xp:this.action>

                        <xp:actionGroup>
                            <xp:saveDocument var="document1"></xp:saveDocument>

                        </xp:actionGroup>
                    </xp:this.action>

                    <xp:this.actionListeners>
                        <xp:actionListener
                            type="com.page.SaveContractListener">
                        </xp:actionListener>
                    </xp:this.actionListeners></xp:eventHandler>

            </xp:button>