I already was at the point of building my complete form, and removing stuff I as go along. The thing I got stuck at was *where* to remove controls. I was keeping state at the form, which was a bad choice. The Page property and the Page#onRender() did the trick.
And now it works :) Thanks WJ On Tue, 2009-06-30 at 19:29 +0200, Bob Schellink wrote: > WarnerJan Veldhuis wrote: > > Gents, > > > > Where is the best place to modify the presence of fields in a Form? I > > have tried to modify the fields by overriding Form#getFieldList(), > > Form#onInit(), Form#onProcess(), but I keep running into issues, where > > the onLogin() ActionListener of the Submit gets fired after all these > > methods. > > > I assume your login form is a stateless page and you want to check in > your onLogin method whether to force a logout? > > Couple of ways you can try (perhaps you already did :) > > 1. The event methods onGet/onPost and onRender are all invoked after > the actionListener is dispatched, so you can override them to add the > "forceLogoff" checkbox. However on the subsequent request the checkbox > won't be part of the Form when the Form is processed (as the checkbox > is only added after the onProcess event). But the "forceLogoff" > request parameter will still be present so you can check if its > available and force the logoff. > > 2. Dynamic Pages can be difficult to work with in a stateless > environment because at design time some controls (in your case the > checkbox) are not part of the Form. So how about reversing this > problem and ensuring that all dynamic parts are part of the Form at > design time. Then at runtime instead of adding the checkbox you > instead remove it. For example you can have a boolean Page property, > "userLoggedOn", which is false by default. In the onRender method you > can query this check whether the checkbox should be rendered or not. > By default "userLoggedOn" will be false so you end up removing the > checkbox. However if your login fails, you can set "userLoggedOn" to > true, meaning it will render and when the Form submits, you can check > if logoff should be forced. > > Hope this helps. > > kind regards > > bob
