我试图在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);
答案 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时才需要 - 谁不支持:-)