Also, here's some useful links on incoming extensions to JSF : http://weblogs.java.net/blog/jhook/archive/2005/09/jsf_avatar_vs_m_1.html https://jsf-extensions.dev.java.net/#documentation
On 4/7/06, Alexandre Poitras <[EMAIL PROTECTED]> wrote: > ADF partial page rendering should do the trick in my opinion, well as > soon as it is released. > > On 4/7/06, Andrew Robinson <[EMAIL PROTECTED]> wrote: > > I am making the HTML render something like: > > > > <form id="myform" ...> > > > > <span id="aazone.JsfFormState"> > > <input type="hidden" ... /> > > <input type="hidden" ... /> > > <input type="hidden" ... /> > > > > <script> > > function clear_myform() { > > ... > > } > > </script> > > </span> > > </form> > > > > This way AjaxAnywhere is able to replace the inner HTML of > > "aazone.JsfFormState" on every AJAX reply. > > > > Right now I have to severly hack the HtmlForm to search for the input > > and script elements written by encodeBegin and encodeEnd so that my > > AJAX response will always send the new clear function and new hidden > > elements. > > > > There is no other easier way to do this with AjaxAnywhere 1.1.0.6 and > > I don't want to write my own AJAX JSF framework. This functionality > > will give me the ability to render start and end span tags around the > > HTML written by HtmlFormRenderer without having to write my own > > renderer or do the hack I am already doing. > > > > -Andrew > > > > > > On 4/7/06, Travis Reeder <[EMAIL PROTECTED]> wrote: > > > What are you trying to accomplish exactly? > > > > > > Travis > > > > > > > > > On 4/7/06, Andrew Robinson <[EMAIL PROTECTED] > wrote: > > > > One method of implementing AJAX is to re-render the page and only send > > > > pieces down to the browser. This is the way AjaxAnywhere works. > > > > However, it is not easy to get this to work in MyFaces with HTML > > > > forms. The issue: > > > > > > > > AJAX needs a way to identify HTML to replace on AJAX response. This is > > > > usually done via id: > > > > "document.getElementById('idFromAjaxResponse').innerHtml > > > = > > > > reponseData". > > > > > > > > However, there is no containing HTML element for the "special" form > > > > elements. These "special" elements include: > > > > > > > > 1) input type="hidden" elements that are rendered for parameters, > > > > client-side state, etc. > > > > 2) script tag that contains the clear_[formid]() JavaScript function > > > > that uses the above hidden input elements > > > > > > > > In 1.1.1, these were placed at the top and bottom of the form. In > > > > 1.1.2/3 they are put only at the bottom, but in neither is the > > > > capability that I would like. > > > > > > > > Workaround I used: Extended the HtmlFormRenderer and buffered the > > > > output of the endcodeEnd and encodeBegin. Then I loop through the > > > > buffer and strip out all hidden input elements and JavaScript tags. I > > > > then add the stripped portion into a new SPAN element that is > > > > formatted for AjaxAnywhere to work. > > > > > > > > How this could have been much easier: > > > > > > > > Add 4 new methods to HtmlFormRendererBase: > > > > public void beforeFormElementsStart(FacesContext > > > facesContext, > > > > UIComponent component) > > > > throws IOException {} > > > > public void afterFormElementsStart(FacesContext > > > facesContext, > > > > UIComponent component) > > > > throws IOException {} > > > > public void beforeFormElementsEnd(FacesContext > > > facesContext, > > > > UIComponent component) > > > > throws IOException {} > > > > public void afterFormElementsEnd(FacesContext > > > facesContext, > > > > UIComponent component) > > > > throws IOException {} > > > > > > > > These methods would the be called: > > > > encodeBegin(...) { > > > > ...render the start tag... > > > > call before form elements start > > > > ...render and elements into the form > > > > call after form elements end > > > > > > > > ... > > > > > > > > encodeEnd(...) { > > > > call before form elements end > > > > ... render state, javascript etc. ... > > > > call after form elements end > > > > ... render the form end tag ... > > > > > > > > > > > > Then, with projects like AjaxAnywhere, users can extend > > > > HtmlFormRenderer and implement these methods. In these methods, we can > > > > write tags to contain this data that can be used in the AJAX code to > > > > update on every request. > > > > > > > > This would be a very simple change, would incur almost no overhead and > > > > give complete flexibility that would be needed to AJAX authors to have > > > > control over the special form behavior of JSF. > > > > > > > > I wouldn't care about the method names, in fact there could be one > > > > method with an enum argument that specifies before/after information. > > > > > > > > What do you think? If it sounds good, could this be added to current > > > > before the next release? Since it would be just empty methods, it > > > > would not de-stabilize the current code. > > > > > > > > Thanks, > > > > Andrew > > > > > > > > > > > > > > > -- > Alexandre Poitras > Québec, Canada > -- Alexandre Poitras Québec, Canada