Yes, so if you respond to an ajax request with a page response, T5 will
send you a json snippet {"redirectURL" : "your.redirect.url"} and handles
redirecting to it from the client. In this case you are responding with a
StreamResponse so T5 gets confused. If you wanted to do an ajax update,
it's totally possible. You just need to move your StreamResponse to a new
page and return (a link to) this page from your event handler. The possible
advantage is that you can have testable download urls for your files, like
/downloadfile/somefile.tmp.

The DownloadFile page would simply contain something like this:

public class DownloadFile {
    StreamResponse onActivate(String fileId) throws IOException {
        return new StreamResponse() {...}
    }
}

Your event handler should return a page object or an URL, check
http://tapestry.apache.org/page-navigation.html for more info.

Kalle



On Fri, Feb 12, 2016 at 1:46 PM, h3ph3st0s <h3ph3s...@gmail.com> wrote:

> Found the solution. I did have the zone part. So it was really ajax call.
> ( But this is as defined from the tutorial ).
> I removed that and now this works smoothly.
>
> As a case is closed from me. But what if I put back the zone in order to
> update in ajax way the form ?
>
> Best regards, happy to test a very simple framework such as this
>
> On 2016-02-12 16:50, h3ph3st0s wrote:
>
>> Hi,
>> The thing is that I see the tree of directories and files. That's awesome.
>> But to download file really, I need to right click and choose the "save
>> target as....". Then file dialog  pops up and I can download really the
>> file to my client disk.
>> If I don't, the response is getting some how lost in the communication
>> since I have error like this:
>> *Communication with the server failed: TypeError: Unable to get property
>> 'redirectURL' of undefined or null *
>>
>> It seems for me that, the StreamResponse expects something as output,
>> which in the Jumpstart tutorial is there but I can not see it myself.
>> On the other hand I need to trigger somehow this file dialog in order to
>> allow user choose the folder to leave the file.
>>
>> Dimitris
>>
>> On 2016-02-12 16:32, Nathan Quirynen wrote:
>>
>>> You mean the file gets downloaded immediately to some download folder?
>>> I think this is a setting of the used browser where a default location
>>> has been set opposed to the setting where the browser will always ask for
>>> the location.
>>> So I'm afraid you don't really have control over this if I am correct.
>>>
>>> Nathan
>>>
>>> On 12/02/16 15:15, h3ph3st0s wrote:
>>>
>>>> Hi,
>>>>
>>>> I am new to  Tapestry version 5. where I built a treemodel, which
>>>> presents the files inside the catalog,
>>>>
>>>> /<t:tree t:id="tree" t:model="stuffModel" t:node="treeNode"
>>>> t:value="classificationNode">
>>>>                         <p:label>
>>>>                             <t:if test="treeNode.leaf">
>>>>                                 <a t:type="EventLink"
>>>> t:event="leafSelected" t:context="classificationNode.name"
>>>> t:zone="selectedZone" class="prop:leafClass"
>>>>                                     href="#">
>>>>                                     ${treeNode.label}
>>>>                                 </a>
>>>>                             </t:if>
>>>>                             <t:if test="!treeNode.leaf">
>>>>                                 ${treeNode.label}
>>>>                             </t:if>
>>>>                         </p:label>
>>>> </t:tree>/
>>>>
>>>> and by clicking one of the files I build a StreamResponse ( I used the
>>>> snippet from the jumpstart code ( page:
>>>> http://jumpstart.doublenegative.com.au/jumpstart/examples/navigation/returntypes1
>>>> )
>>>>
>>>> The function is :
>>>>
>>>> /public Object onLeafSelected(final String classificationId) {
>>>>         System.out.println(classificationId);
>>>>         System.out.println(regFile.get(classificationId));
>>>>         final File file = new File( regFile.get(classificationId) );
>>>>         return new StreamResponse() {
>>>>             InputStream inputStream;
>>>>
>>>>             @Override
>>>>             public void prepareResponse(Response response) {
>>>>                 ClassLoader classLoader =
>>>> Thread.currentThread().getContextClassLoader();
>>>>                 try {
>>>>                     inputStream = new FileInputStream(file);
>>>>                     try {
>>>>                         response.setHeader("Content-Length", "" +
>>>> inputStream.available());
>>>>                     }
>>>>                     catch (IOException e) {
>>>>                         // Ignore the exception in this simple example.
>>>>                     }
>>>>                 } catch (FileNotFoundException e1) {
>>>>                     // TODO Auto-generated catch block
>>>>                     e1.printStackTrace();
>>>> }//classLoader.getResourceAsStream(regFile.get(classificationId));
>>>>
>>>>                 // Set content length to prevent chunking - see
>>>>                 //
>>>> http://tapestry-users.832.n2.nabble.com/Disable-Transfer-Encoding-chunked-from-StreamResponse-td5269662.html#a5269662
>>>>
>>>>             }
>>>>
>>>>             @Override
>>>>             public String getContentType() {
>>>>                 return "text/plain";
>>>>             }
>>>>
>>>>             @Override
>>>>             public InputStream getStream() throws IOException {
>>>>                 return inputStream;
>>>>             }
>>>>         };
>>>>     }/
>>>>
>>>> My problem and my question is how do I present a save-file-dialog that
>>>> will help the user to point the download folder. In order to really
>>>> download the file I must make right-click and then choose "save file as..."
>>>> ?
>>>>
>>>> Thanks in advance
>>>>
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>
>>>
>>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to