我有一個提交按鈕的面板。 onsubmit,我想寫一些文本到文件並提供文件下載給用戶。不知道該怎麼去做。如果有人能指向一個真正有幫助的鏈接或代碼檢票提供文件下載
Q
檢票提供文件下載
2
A
回答
0
這並不容易。我使用了下載鏈接,但沒有一個表單變量被下載鏈接使用,因爲點擊下載鏈接不會提交表單。它只是使用初始值。我必須使用ajax onchange事件來更新表示表單組件的實例變量,然後使用下載鏈接根據用戶輸入創建文件。
0
如在entry on the Wicket wiki中詳細描述的,您需要創建一個行爲來構建您的文件,然後通過提交鏈接觸發該文件。這將確保在您創建文件之前使用模型更新完成。
創建從資源流的請求行爲實現:
public abstract class AJAXDownload extends AbstractAjaxBehavior
{
private boolean addAntiCache;
public AJAXDownload() {
this(true);
}
public AJAXDownload(boolean addAntiCache) {
super();
this.addAntiCache = addAntiCache;
}
/**
* Call this method to initiate the download.
*/
public void initiate(AjaxRequestTarget target)
{
String url = getCallbackUrl().toString();
if (addAntiCache) {
url = url + (url.contains("?") ? "&" : "?");
url = url + "antiCache=" + System.currentTimeMillis();
}
// the timeout is needed to let Wicket release the channel
target.appendJavaScript("setTimeout(\"window.location.href='" + url + "'\", 100);");
}
public void onRequest()
{
ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(),getFileName());
handler.setContentDisposition(ContentDisposition.ATTACHMENT);
getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
}
/**
* Override this method for a file name which will let the browser prompt with a save/open dialog.
* @see ResourceStreamRequestTarget#getFileName()
*/
protected String getFileName()
{
return null;
}
/**
* Hook method providing the actual resource stream.
*/
protected abstract IResourceStream getResourceStream();
}
的(提交)鏈接和行爲的實現:
final AJAXDownload download = new AJAXDownload()
{
@Override
protected IResourceStream getResourceStream()
{
return createResourceStream(item.getModelObject());
}
};
item.add(download);
item.add(new AjaxSubmitLink("link") {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form)
{
// do whatever with the target, e.g. refresh components
target.add(...);
// finally initiate the download
download.initiate(target);
}
});
@magomi創建了一個類似的實現響應this問題。
相關問題
- 1. Django提供下載文件
- 2. Django - 提供文件供下載
- 3. 檢票:提交按鈕下載二進制文件
- 4. 下載Web部件和提供文件?
- 5. .msg文件提供下載錯誤
- 6. 提供鏈接以下載文件
- 7. 提供.jad文件下載鏈接
- 8. 提供可下載的文件perl-template
- 9. 使用PHP提供文件下載
- 10. 提供一個遠程文件下載
- 11. 在會話中提供文件下載
- 12. 讓Django提供可下載的文件
- 13. 檢票下載輸出流
- 14. 使用Android下載提供商下載文件
- 15. 以PDF格式提供檢票頁面
- 16. 提供文件供PHP下載 - 停止多次點擊
- 17. 閱讀PDF文件並以iText作爲下載文件提供
- 18. 使用PHP強制下載文件並提供空文件
- 19. python:在使用urllib下載文件時提供文件,BaseHTTPSserver
- 20. 提供沒有文件擴展名的可下載文件?
- 21. 使用JavaScript來下載文件在檢票
- 22. 用JavaScript下載提供
- 23. 通過下載鏈接提供下載文件的最佳方法是什麼?
- 24. 下載PDF文件提交
- 25. 從Android Studio提供的URL下載文件
- 26. 在AngularJS html5mode express環境中提供文件下載
- 27. 如何從谷歌應用引擎提供APK文件下載
- 28. 爲用戶提供的Excel(xlsx)文件在Django(Python)中下載
- 29. 在ASP.NET2.0中提供動態文件下載
- 30. php如何提供文件,但不能下載
看看這篇文章[如何使用Wicket的DownloadLink與在飛行中生成的文件](http://stackoverflow.com/questions/7646270/how-to-use-wickets-downloadlink-with-a-文件生成的飛行) – mvlupan
[下載鏈接](http://wicket.apache.org/apidocs/1.5/org/apache/wicket/markup/html/link/DownloadLink.html) – TOUDIdel