XTile

A component providing the required JavaScript to pass some information to the server and receive its response without reloading the page (Ajax)

Warning:

The XTileService that this component uses does NOT activate any page - it simply calls the specified listener. This means that pageBeginRender() methods will not get called and that cycle.getPage() will return null.

Parameters

Name Type Required Default Description
listener IActionListener no The listener that will be invoked when the Javascript function with the given name is invoked. Any parameters passed to the send function will be available from cycle.getListenerParameters(). In addition, the listener can perform cycle.setListenerParameters() to pass an array of strings to the JavaScript receive function. If this parameter is not provided, Tapestry will attempt to find a listener with the capitalized id of the component, prefixed by "do". For example, jwcid="clear@XTile" would expect a listener called doClear().
sendName String yes The name of the JavaScript function that the script will define to allow the application to send information to the server.
receiveName String yes The name of the JavaScript function that the script will call to allow the application to receive information from the server some time after the send function has been invoked.
errorName String no The name of the JavaScript function that the script will call to indicate that an error has occurred while sending the information to the server.
disableCaching boolean no false Some browsers cache repeated requests that have identical URLs. Pass 'true' to this parameter to disable caching by making the URLs unique.

Body: removed

Informal parameters: allowed

Reserved parameters: none

Examples

The XTile example has portions implemented in the HTML and a listener method in the page class. They are broken down as follows:

XTileExample.html

<html>
  <head>
    <title>XTile Example</title>
  </head>
  <body>
    <span jwcid="@contrib:XTile" listener="ognl:listeners.handleListRequest"
        sendName="sendPrefix" receiveName="recvList"/>
    <form action="Results.html" method="post">
       <input type="text" onkeyup="sendPrefix(this.value)"/>
       <br/>
       <textarea name="listing" rows="5"></textarea>
    </form>
    <script>
      function recvList(arr) {
      	document.f.listing.value = arr.join("\n");
      }
    </script>

  </body>
</html>
	

Then in your page class you just need to add the appropriate method.

XTileExample.java

    .
    .
    .
    public void handleListRequest(IRequestCycle cycle) {
      Object[] params = cycle.getListenerParameters();
      if (params.length == 0) return;

      String typed = params[0].toString();
      String[] ret = findCompletions(typed);
      cycle.setListenerParameters(ret);
    }
    .
    .
    .