Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
HVHtmlBuilder
Last updated at 3:06 pm UTC on 29 October 2018
HVHtmlBuilder objects build HTML pages and handle HTML Forms.

A HVHtmlBuilder object has a back reference to the HVHttpView that created it (for various services) and to the request of that view.

Typical use is
1. to instantiate a HVHtmlBuilder object (a HVHttpView has a method #builder which creates one),
2. feed it "build messages" and
3. then finally call #render which will stream out the resulting HTML page.


Example:

 builder := self builder.  "1"
 builder start.
 builder h1: 'A heading'.

     builder postForm.
     builder inputText: #name
     builder submit.
     builder endForm.

 builder end.
 builder render

During the build some of the "build messages" return objects that can be used for input and output - typically objects representing
etc.
The messages #postForm, #inputText: and #submit all returned objects in the code above but the code chose to ignore them.

The #contents message causes the builder to assemble the finished HTML document and return it as a String.

Normally you just return the builder itself since its class HVHtmlBuilder also implements #asHttpResponseTo: which means that it can fed as a result to Comanche/KomHttpServer from an 'url' method in a HVHttpView object.

So you do not need to call #render and actually, in order to compose pages from multiple methods it is better if you do not call #render.

...

elements - An OrderedCollection holding all elements that constitute the page.
elementStack - An OrderedCollection acting as a stack for certain elements like for example forms.


Another example: HVSimpleForms method megaform2