के बाद फ़ाइलें डाउनलोड तो क्या मैं तीन कॉलम, एक चेकबॉक्स स्तंभ उन जो फाइलें वे डाउनलोड करने के लिए चाहते हैं की जांच की अनुमति देता है, जिनमें से एक के साथ एक DataView
है।विकेट: एक ऑनसबमिट
सादगी की खातिर के लिए (मुझे लगता है कि); मैंने फ़ाइलों को एक ज़िप फ़ाइल में संपीड़ित करने का निर्णय लिया है और इसे उत्पन्न होने के बाद इसकी सेवा की है।
यहाँ मैं अब तक है:
कोड::
Button downloadLogButton = new Button("downloadlogbutton") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
// Some utility class I made that zips files
LogUtility util = new LogUtility();
util.zipLogFiles("sample", logs);
}
};
Form logsForm = new Form("logsform") {
};
logsForm.add(downloadLogButton);
CheckGroup<File> checkGroup = new CheckGroup<File>("logscheckgroup", new ArrayList<File>());
WebMarkupContainer logsViewContainer = new WebMarkupContainer("datatable");
DataView<File> logsView = new DataView<File>("logrows", new ListDataProvider<File>(logs)) {
private static final long serialVersionUID = 1L;
public void populateItem(final Item<File> item) {
final File file = (File) item.getModelObject();
item.add(new Check<File>("logdownloadcheck", item.getModel()));
item.add(new Label("logname", file.getName()));
SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMM yyyy hh:mm a");
item.add(new Label("logdatemodified", sdf.format(file .lastModified())));
}
};
logsViewContainer.add(logsView);
checkGroup.add(logsViewContainer);
logsForm.add(checkGroup);
add(logsForm);
मैं कैसे ज़िप फ़ाइल के बाद यह डाउनलोड के लिए उत्पन्न होता है की सेवा करते हैं? मेरे विकल्प क्या हैं? मैं उन्हें एक पुष्टिकरण पृष्ठ या Your download is ready
पृष्ठ पर रीडायरेक्ट करने के लिए होने से बचने के लिए करना चाहते हैं।
अद्यतन
जावी लोपेज जवाब के आधार पर, मैं अपने Button
के onSubmit
समारोह में निम्नलिखित कोड जोड़ा।
org.apache.wicket.util.file.File log = new org.apache.wicket.util.file.File("/home/keeboi/Downloads/sample.zip");
IResourceStream resourceStream = new FileResourceStream(log);
IRequestHandler target = new ResourceStreamRequestHandler(resourceStream);
getRequestCycle().scheduleRequestHandlerAfterCurrent(target);
और मुझे HTTP Error 404: Not Found
मिल रहा है।
चूंकि मैं विकेट 1.5 का उपयोग कर रहा हूं, मैंने इसे ऐसा किया: 'org.apache.wicket.util.file.File log = new org.apache.wicket.util.file.File ("/home/keeboi/डाउनलोड/sample.zip "); IResourceStream resourceStream = नए FileResourceStream (लॉग इन करें); IRequestHandler लक्ष्य = नए ResourceStreamRequestHandler (resourceStream); getRequestCycle() scheduleRequestHandlerAfterCurrent (लक्ष्य)। ' लेकिन मुझे 'HTTP त्रुटि 404 मिल रहा है: नहीं मिला' –
ठीक है, मेरी उपयोगिता कक्षा में एक गलती थी। धन्यवाद! –