XPages - 使用Java将文本复制到本地剪贴板

时间:2015-03-03 15:29:41

标签: java xpages lotus-domino

我试图在XPage应用程序中使用Java代码将文本复制到本地Windows剪贴板。我的代码(通过单击按钮执行)复制代码并将其输出到IBM / Lotus Domino服务器控制台。我希望能够使用Ctrl-V在本地(在我的Windows 7 PC上)粘贴复制的文本,但这不起作用。我的代码需要做些什么改变呢?

import java.awt.datatransfer.*;
import java.awt.Toolkit;
import java.io.*;

        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();

        StringSelection testData;

        //  Add some test data 

        testData = new StringSelection( "New Test Data" );

        c.setContents(testData, null);

        //  Get clipboard contents, as a String

        Transferable t = c.getContents( null );

        if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
        {
            Object o = t.getTransferData( DataFlavor.stringFlavor );
            String data = (String)t.getTransferData( DataFlavor.stringFlavor );
            System.out.println( "Clipboard contents: " + data );
        }

        System.exit(0);

2 个答案:

答案 0 :(得分:1)

Java无法做到这一点。 Java代码在服务器上运行,无法“填充”客户端的剪贴板。

如果您不依赖于IE或旧浏览器版本,请在CSJS中使用 HTML5 Clipboard API 。 (https://stackoverflow.com/a/26336421/2065611 http://datatables.net/blog/2014-01-31#Clipboard-API)。使用XSP.partialRefreshGet从服务器获取剪贴板的文本,并执行ClipboardEvent'copy'onComplete。

答案 1 :(得分:1)

除了Knut Herrmanns的回答:使用例如客户端Javascript无法将文本复制到用户的剪贴板。

但是,您可以使用Flash。我在项目中使用了ZeroClipboard

更新: Knut通过对HTML5 Clipboard API的引用更新了他的回答。所以我的答案只有在你需要支持IE and older browsers时才需要 - 谁不支持:-)