This should get you going:
new ResourceLink<Void>("pdf", new AbstractResource() {
@Override
protected ResourceResponse newResourceResponse(Attributes attributes) {
final byte[] pdfBytes = getPdfBytes();
ResourceResponse r = new ResourceResponse();
r.setFileName("yourpdf.pdf");
r.setContentType("application/pdf");
r.setContentDisposition(ContentDisposition.ATTACHMENT);
r.setContentLength(pdfBytes.length);
r.setWriteCallback(new WriteCallback() {
@Override
public void writeData(Attributes attributes) throws IOException {
attributes.getResponse().write(pdfBytes);
}
});
return r;
}
}
On Sun, Oct 14, 2012 at 8:14 PM, Michael Jaruska
<[email protected]>wrote:
> Is there more complex example? Do you build link with DownloadLink or
> ResourceLink? -I suppouse you use ResourceLink. And yes, I would like to
> build response data at the link click moment, no temp file if possible
> (in fact I have data as byte[] from database).
>
>
>
> On 14.10.2012 21:59, Dan Retzlaff wrote:
>
>> I usually wrap a custom AbstractResource instance in a ResourceReference,
>> and put that into the ResourceLink. AbstractResource#**
>> newResourceResponse()
>> is called when the link is clicked. You can query for the bytes there, and
>> write them to the response in your ResourceResponse's WriteCallback. For a
>> download, the relevant setters are:
>>
>> ResourceResponse response = new ResourceResponse();
>> response.setFileName(...);
>> response.setContentType(...);
>> response.setContentLength(...)**;
>> response.**setContentDisposition(**ContentDisposition.ATTACHMENT)**;
>> response.setWriteCallback(new WriteCallback() {...});
>>
>> On Sun, Oct 14, 2012 at 7:45 PM, Michael Jaruska
>> <[email protected]>**wrote:
>>
>> Dan, thank you for links and points.
>>>
>>> The true is that I have data in database so I would like streaming them.
>>> Is the right
>>> way put them in temp file first and then send it into browser with
>>> DownloadLink?
>>>
>>> After some googling I noticed that ResourceLink should be like
>>> DownloadLink but for me
>>> better - it's for streamed data. But can't find any example for wicket
>>> 1.5
>>> :-(
>>>
>>> MJ
>>>
>>>
>>>
>>> On 14.10.2012 21:00, Dan Retzlaff wrote:
>>>
>>> Michael, check out the DownloadLink example here:
>>>> http://www.wicket-library.com/****wicket-examples/linkomatic/****home<http://www.wicket-library.com/**wicket-examples/linkomatic/**home>
>>>> <http://www.wicket-**library.com/wicket-examples/**linkomatic/home<http://www.wicket-library.com/wicket-examples/linkomatic/home>
>>>> >
>>>>
>>>>
>>>> Also check out the code for DownloadLink itself, and you'll see
>>>> 1. Your IModel must return a File, but yours returns bytes.
>>>> 2. The download is initiated in DownloadLink#onClick, which you have
>>>> blocked with your subclass.
>>>>
>>>> Hope that helps,
>>>> Dan
>>>>
>>>> On Sun, Oct 14, 2012 at 5:09 PM, Michael Jaruska
>>>> <[email protected]>****wrote:
>>>>
>>>> Hi,
>>>>
>>>>>
>>>>> what to add into onClick() in DownloadLink if I need return to client
>>>>> generated .pdf
>>>>> stream as a .pdf file?
>>>>>
>>>>> My code:
>>>>>
>>>>> IModel pdfStreamModel = new AbstractReadOnlyModel()
>>>>> {
>>>>> public Object getObject()
>>>>> {
>>>>> return getPdfStreamBytes();
>>>>> }
>>>>> };
>>>>> DownloadLink downloadLink = new DownloadLink("downloadLink",
>>>>> pdfStreamModel, getPdfDocumentName())
>>>>> {
>>>>> public void onClick()
>>>>> {
>>>>> System.out.println("clicking works");
>>>>> }
>>>>> };
>>>>>
>>>>> Model works, DownloadLink is added into my markup. But I can't find any
>>>>> example how to deal
>>>>> code into onClick() in DownloadLink in a way it will return my
>>>>> generated
>>>>> .pdf stream in model.
>>>>>
>>>>> Thank folks,
>>>>>
>>>>> MJ
>>>>>
>>>>> ------------------------------******--------------------------**--**
>>>>> --**---------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.****apa**che.org<
>>>>> http://apache.org**>
>>>>> <users-unsubscribe@**wicket.**apache.org <http://wicket.apache.org><
>>>>> users-unsubscribe@**wicket.apache.org<[email protected]>
>>>>> >
>>>>>
>>>>>
>>>>>>
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>>
>>>>>
>>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail:
>>> users-unsubscribe@wicket.**apa**che.org<http://apache.org>
>>> <users-unsubscribe@**wicket.apache.org<[email protected]>
>>> >
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>>
>>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail:
> users-unsubscribe@wicket.**apache.org<[email protected]>
> For additional commands, e-mail: [email protected]
>
>