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;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:
- 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>"]; } }
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".