【问题标题】:POI 4 XPages - document generation works only oncePOI 4 XPages - 文档生成只工作一次
【发布时间】:2014-02-21 09:56:37
【问题描述】:

好吧,说实话:标题并没有说明全部真相。我正在使用一个带有几个按钮(保存、关闭、编辑等)的自定义控件和一个执行 POI 操作的按钮 - 它会生成一个 Word 文件。 我在这里遇到了一个问题:点击 POI 按钮后,我的其他按钮(以及 POI 按钮)将不再起作用,不会触发点击。 现在奇怪的是:等待几秒钟后(取决于我使用的浏览器,Chrome 是最快的),我可以再次单击按钮(全部),以便我可以例如离开(关闭)或编辑我的 Xpage。

我不知道这是否有帮助,但这是我的 POI 按钮的事件代码:

<xp:button id="button5" styleClass="btn btn-sm printbutton"
            style="display:none">
            <i class="fa fa-print"></i>
            &#160;
            <xp:text>
                <xp:this.value><![CDATA[#{javascript:"Nach MS Word exportieren"}]]></xp:this.value>
            </xp:text>

            <xp:eventHandler event="onclick" submit="true"
                refreshMode="complete">
                <xp:this.action>

                    <xp:actionGroup>
                        <xp_1:generateDocument documentId="wordprint"
                            loaded="true">
                        </xp_1:generateDocument>
                    </xp:actionGroup>
                </xp:this.action>
            </xp:eventHandler>
        </xp:button>

任何想法如何避免这种行为或者它是 POI 4 XPages 中的错误?

顺便说一句:我无法在获取 Word 文档后立即执行其他操作,例如执行脚本或打开页面。这也是在“打印”后关闭 xpage 的一种可接受的方式。

提前致谢!

【问题讨论】:

    标签: apache-poi xpages


    【解决方案1】:

    Oliver,将客户端 JS 调用 XSP.allowSubmit() 添加到您的按钮,以便在按下按钮后允许新的提交:

    <xp:button id="button5" styleClass="btn btn-sm printbutton" style="display:none">
            <i class="fa fa-print"></i>
            &#160;
            <xp:text>
                <xp:this.value><![CDATA[#{javascript:"Nach MS Word exportieren"}]]></xp:this.value>
            </xp:text>
    
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="complete">
                <xp:this.action>
                    <xp:actionGroup>
                        <xp_1:generateDocument documentId="wordprint"
                            loaded="true">
                        </xp_1:generateDocument>
                    </xp:actionGroup>
                </xp:this.action>
                <xp:this.script><![CDATA[XSP.allowSubmit()]]></xp:this.script>
            </xp:eventHandler>
        </xp:button>
    

    【讨论】:

    • 感谢 Per,出色的解决方案。我将在下一个版本中将它添加到示例数据库中。我知道你有什么想法,我怎么能在后端做同样的事情,让我知道。但我认为那是不可能的。
    【解决方案2】:

    我认为问题在于您正在从同一页面上的按钮生成 word 文档。

    从 XAgent 生成。让按钮调用包含 XAgent 的 XPage,您应该没问题。

    【讨论】:

    • 是的,另一种方法是使用 URL。谢谢,伙计!
    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2018-12-06
    相关资源
    最近更新 更多