« Return to Thread: Form Submit On Enter

Re: Form Submit On Enter

by Jean-Baptiste Bugeaud :: Rate this Message:

Reply to Author | View in Thread

Hello all,

Here is the solution for JSF RI :
http://www.jsftutorials.net/defaultActionTag.html
(take care code need a small improvement to be "facelet-ified" and XHTML-ified)

Plus I would encourage your to post a feature request on the JSF RI
issue tracker for this one ;-)

Regards,
JB

2006/3/22, Martin Marinschek <martin.marinschek@...>:

> P.S.:
>
> and this is not JSF specific - you have that problem with plain JSP as well.
>
> regards,
>
> Martin
>
> On 3/22/06, Martin Marinschek <martin.marinschek@...> wrote:
> > well,
> >
> > in one of my current projects, we have a situation where the page is
> > cluttered with:
> >
> > onchange="submit();"
> >
> > I suppose this is what Adam is referring to.
> >
> > regards,
> >
> > Martin
> >
> > On 3/22/06, bruno@... <bruno@...> wrote:
> > > Quoting Adam Winer <adam.winer@...>:
> > >
> > > > bruno@... wrote:
> > > > > In practice, you could consider that on a form that has only one button,
> > > > this is
> > > > > the default. Otherwise, yes, you would need to specify it.
> > > > >
> > > > > However, "Javascript magic" is not necessarilly the way to go. The reason
> > > > for
> > > > > this is that JS is not accessibility friendly.
> > > >
> > > > This is largely a myth.  Javascript can be accessible,
> > > > or it can be inaccessible.  Images on a page can be accessible,
> > > > or inaccessible.  Plain XHTML, 100% validating, can be
> > > > utterly inaccessible.
> > >
> > > Yes I know, Javascript can be made accessible and plain XHTML can be made
> > > inaccessible. My gut feel though is generally to look for a solution that
> > > doesn't involve Javascript because it is something that the user can disable
> > > and that I have no control over. I also know of IT departments that disable JS
> > > on purpose on all browser installations in their companies. Most of the
> > > customers I have worked with also insist on making sure that the site can work
> > > without Javascript for the same reasons.
> > >
> > > Of course, any technology can be bad when used improperly, as demonstrated by
> > > the output of some Microsoft tools that manage to build a whole page using HTML
> > > that consists of DIV and SPAN tags laid out and formatted using CSS.
> > >
> > >
> > > >
> > > > > Also, if you have a form with a
> > > > > lot of text fields (or fields that can have the focus), it means you have
> > > > to
> > > > > assign a JS listener to all of them. This could get messy.
> > > >
> > > > No, you don't.  You use event bubbling to capture key presses
> > > > once, on the <form> DOM element.
> > >
> > > I didn't know that. Thanks for the tip.
> > >
> > > >
> > > > > We solved that problem in a previous job, in a home brewed UI framework, by
> > > > > having the equivalent of the ADF defaultCommand attribute on the form
> > > > rendering
> > > > > tag and storing that value in the HTTPSession. When receiving the form
> > > > back, the
> > > > > framework would attempt to identify the button clicked and if no value was
> > > > > available would get the default value out of HTTPSession.
> > > >
> > > > ... which doesn't work in JSF, because you wouldn't know if something
> > > > else on the page (that isn't a button) triggered a submit.
> > >
> > > Well, I can't remember the exact details but we managed to make it work with
> > > plain JSP so I assume that everything that can be done with JSP can be done
> > > with JSF. The gist of it is that when the form is submitted, you know what form
> > > is submitted (if several on the page), there is just no button information. We
> > > took this to mean that the form should be used with the default action.
> > >
> > > I'll grant you that doing this you don't know what exact event triggered the
> > > submit (although I can't think of anything other than pressing Enter in the
> > > form) but it seems like a reasonable approach: if no button info, perform the
> > > default action.
> > >
> > > Bruno
> > >
> > > >
> > > > -- Adam
> > > >
> > > >
> > > > > If you don't want to
> > > > > use HTTPSession, another JS-free solution is to add a hidden field with a
> > > > > well-known ID to your form when rendering it that contains the ID of the
> > > > > default button.
> > > > >
> > > > > I am new to JSF so I don't know what you would override to implement this
> > > > > behaviour but I suspect providing an alternate form rendering object would
> > > > be a
> > > > > good start. I would be nice of JSF/Facelets provided that out of the box
> > > > though
> > > > > :-)
> > > > >
> > > > > Bruno
> > > > >
> > > > > Quoting Adam Winer <adam.winer@...>:
> > > > >
> > > > >> Yep, exactly - the form can't figure out what button was pressed.
> > > > >> There's no magic way for JSF to automatically know what is meant
> > > > >> by the "default button".
> > > > >>
> > > > >> ADF adds a "defaultCommand" property to af:form, so you can have:
> > > > >>
> > > > >>
> > > > >> <af:form defaultCommand="okButton">
> > > > >>    ...
> > > > >>    <h:commandButton id="okButton" value="OK"/>
> > > > >>    ...
> > > > >> </af:form>
> > > > >>
> > > > >> ... and it does the Javascript magic needed to map Enter
> > > > >> to that button.
> > > > >>
> > > > >> -- Adam
> > > > >>
> > > > >>
> > > > >> bruno@... wrote:
> > > > >>> When you submit without clicking a button, the form is sent to the server
> > > > >> by the
> > > > >>> browser but no HTTP parameter is passed to indicate what button was
> > > > clicked
> > > > >>> (because none was) or it is passed with a blank value (I can't recall).
> > > > >>> Therefore, I suppose JSF/Facelets is unable to identify what button was
> > > > >>> activated and what action should be triggered. In practice, it would be
> > > > >> nice if
> > > > >>> JSF/Facelets handled this behaviour properly and assumed that no HTTP
> > > > param
> > > > >> for
> > > > >>> the button means to behave as if the default button had been clicked.
> > > > >>>
> > > > >>> Quoting "Storm, Dan" <dstorm@...>:
> > > > >>>
> > > > >>>> If a text field has focus, the form will submit upon hitting the enter
> > > > (or
> > > > >>>> return) key. This does not seem to work in facelets. Is this a bug in
> > > > >>>> Facelets and/or should we write some JS?
> > > > >>>>
> > > > >>>> dan storm ~ web developer ~ dstorm@... ~ w: 206.266.0292 ~ c:
> > > > >>>> 425.503.9580
> > > > >>>>
> > > > >>>>
> > > > >>>
> > > > >>>
> > > > >>> ---------------------------------------------------------------------
> > > > >>> To unsubscribe, e-mail: users-unsubscribe@...
> > > > >>> For additional commands, e-mail: users-help@...
> > > > >>>
> > > > >> ---------------------------------------------------------------------
> > > > >> To unsubscribe, e-mail: users-unsubscribe@...
> > > > >> For additional commands, e-mail: users-help@...
> > > > >>
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@...
> > > > > For additional commands, e-mail: users-help@...
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@...
> > > > For additional commands, e-mail: users-help@...
> > > >
> > > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@...
> > > For additional commands, e-mail: users-help@...
> > >
> > >
> >
> >
> > --
> >
> > http://www.irian.at
> >
> > Your JSF powerhouse -
> > JSF Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache MyFaces
> >
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...

 « Return to Thread: Form Submit On Enter