Documentation Archive Developer
Search
Table of Contents Previous Section

Generating a Response

The appendToResponse:inContext: method is invoked in the final phase of the request-response loop, during which the application generates HTML for the response page. You can override this method to add to the response content or otherwise manipulate the HTTP response. For example, you can add or modify the HTTP headers as in the following example:

	- appendToResponse:aResponse inContext:aContext
	{
		[super appendToResponse:aResponse inContext:aContext];
		[aResponse setHeader:@"True" 
			forKey:@"dshttpd-NoAutomaticFooter"];
	} 
In a similar manner, you can use appendToResponse:inContext: to add text to the response content. In the following example, a component's appendToResponse:inContext: method adds bold and italic markup elements around a string's value as follows:

	id value;
	id escapeHTML;
	id isBold;
	id isItalic;

- appendToResponse:aResponse inContext:aContext
{ id aString = [value description]; [super appendToResponse:aResponse inContext:aContext]; [aResponse appendContentHTMLAttributeValue:@"<p>"]; if (isBold) { [aResponse appendContentHTMLAttributeValue:@"<b>"]; } if (isItalic) { [aResponse appendContentHTMLAttributeValue:@"<i>"]; } if (escapeHTML) { [aResponse appendContentString:aString]; } else { [aResponse appendContentHTMLString:aString]; } if (isItalic) { [aResponse appendContentHTMLAttributeValue:@"</i>"]; } if (isBold) { [aResponse appendContentHTMLAttributeValue:@"</b>"]; } }
After you invoke super's appendToResponse:inContext:, the application generates the response page. At this point you could do something appropriate for the end of the request. For example, the following implementation terminates the current session:

	public void appendToResponse(response, context) {
		super.appendToResponse(response, context);
		session().terminate();
	}
For more details on each phase of the request-response loop, read the chapter "WebObjects Viewed Through Its Classes".