<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- We need a doctype to allow us to use special characters like
We use a "strict" DTD to make IE follow the alignment rules. -->
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd">
<body class="container">
<h3>Return Types (1)</h3>
Event handler methods control what is displayed next by what they return. <br/>
The following EventLinks demonstrate all of the return types that Tapestry allows:
<div class="eg">
<t:eventlink event="returnvoid">void</t:eventlink> - redisplay the same page.<br/>
<t:eventlink event="returnnull">null</t:eventlink> - redisplay the same page.<br/>
<t:eventlink event="returnfalse">false</t:eventlink> - redisplay the same page.<br/>
<t:eventlink event="returntrue">true</t:eventlink> - redisplay same page, aborting event bubbling (see Event Bubbling example).<br/>
<t:eventlink event="returnstring">String (must be a logical page name)</t:eventlink> - go to new page.<br/>
<t:eventlink event="returnclass">Class (must be a page class)</t:eventlink> - go to new page.<br/>
<t:eventlink event="returnpageinstance">page instance</t:eventlink> - go to new page. The page may have been configured (by calling its methods).<br/>
<t:eventlink event="returnlink">Link</t:eventlink> - go to new page. The link may include a context.<br/>
<t:eventlink event="returnstreamresponse">StreamResponse</t:eventlink> - used by pages or components to return images, PDFs, XML, etc.
See also the Web Services example.<br/>
<t:eventlink event="returnurl">URL</t:eventlink> - go to a java.net.URL of an external page.<br/>
<t:eventlink event="returnhttperror">HttpError</t:eventlink> - returns an
<a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes">HTTP status code</a>.<br/>
<t:if t:test="message">
<br/>
<div class="alert alert-info">
${message}
</div>
</t:if>
</div>
References:
<a href="http://tapestry.apache.org/page-navigation.html#PageNavigation-ComponentEventRequests&Responses">Component Event Requests</a>,
<a href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/HttpError.html">HttpError</a>,
<a href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/Link.html">Link</a>,
<a href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a>,
<a href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/StreamResponse.html">StreamResponse</a>,
the Streaming Data section of <a href="http://wiki.apache.org/tapestry/Tapestry5HowTos#Streaming_Data">Tapestry 5 How Tos</a>,
<a href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/components/If.html">If</a>.<br/><br/>
<t:pagelink page="Index">Home</t:pagelink><br/><br/>
<t:tabgroup>
<t:sourcecodetab src="/web/src/main/java/jumpstart/web/pages/examples/navigation/ReturnTypes1.tml"/>
<t:sourcecodetab src="/web/src/main/java/jumpstart/web/pages/examples/navigation/ReturnTypes1.java"/>
<t:sourcecodetab src="/web/src/main/resources/META-INF/assets/css/examples/plain.css"/>
<t:sourcecodetab src="/web/src/main/java/jumpstart/web/text/examples/ReturnTypeText.txt"/>
</t:tabgroup>
</body>
</html>
package jumpstart.web.pages.examples.navigation;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.HttpError;
import org.apache.tapestry5.services.PageRenderLinkSource;
import org.apache.tapestry5.services.Response;
@Import(stylesheet = "css/examples/plain.css")
public class ReturnTypes1 {
@Property
@Persist(PersistenceConstants.FLASH)
private String message;
void onReturnVoid() {
message = "You chose to return void.";
}
Object onReturnNull() {
message = "You chose to return null.";
return null;
}
boolean onReturnFalse() {
message = "You chose to return false.";
return false;
}
boolean onReturnTrue() {
message = "You chose to return true.";
return true;
}
Class<ReturnTypesClass> onReturnClass() {
return ReturnTypesClass.class;
}
String onReturnString() {
return "examples/navigation/ReturnTypesString";
}
@InjectPage
private ReturnTypesPageInstance pageInstance;
Object onReturnPageInstance() {
pageInstance.set("Hello");
return pageInstance;
}
@Inject
private PageRenderLinkSource pageRenderLinkSource;
Link onReturnLink() {
String parameters = "Howdy";
Link link = pageRenderLinkSource.createPageRenderLinkWithContext(ReturnTypesLink.class, parameters);
return link;
}
StreamResponse onReturnStreamResponse() {
return new StreamResponse() {
InputStream inputStream;
@Override
public void prepareResponse(Response response) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
inputStream = classLoader.getResourceAsStream("jumpstart/web/text/examples/ReturnTypeText.txt");
// Set content length to prevent chunking - see
// http://tapestry-users.832.n2.nabble.com/Disable-Transfer-Encoding-chunked-from-StreamResponse-td5269662.html#a5269662
try {
response.setHeader("Content-Length", "" + inputStream.available());
}
catch (IOException e) {
// Ignore the exception in this simple example.
}
}
@Override
public String getContentType() {
return "text/plain";
}
@Override
public InputStream getStream() throws IOException {
return inputStream;
}
};
}
URL onReturnURL() throws MalformedURLException {
return new URL("http://tapestry.apache.org");
}
HttpError onReturnHttpError() {
return new HttpError(404, "Page not found");
}
}
.eg {
margin: 20px 0;
padding: 14px;
border: 1px solid #ddd;
border-radius: 6px;
-webkit-border-radius: 6px;
-mox-border-radius: 6px;
}
You chose to return a StreamResponse which has streamed this text file, ReturnTypeText.txt.