I'm now looking at the Interface21's FormControllerTestSuite
http://fisheye1.cenqua.com/browse/springframework/i21/test/com/interface21/web/servlet/mvc/FormControllerTestSuite.java?r=MAIN
They have implemented a formBackingObject() method in their TestController
class (way on the bottom...)
TestController extends SimpleFormController
Admittedly, they don't have a service layer for the tests that use
TestController, but why is it that someone would use formBackingObject or
bindOnNewForm? (since I don't seem to be able to find any semi-complex
examples of this... )
Matt Raible-3 wrote:
>
> Yes.
>
> On 1/30/07, maskkkk <[EMAIL PROTECTED]> wrote:
>>
>> So another words I should use just a Bible Object (as the form) and than
>> it
>> should bind automatically both ways?
>>
>> *From the form (void PropertyEditorSubclass.setAsText(String id))
>> *To the form (String PropertyEditorSubclass.getAsText(Object bible))
>>
>> ?
>>
>> Thanks again,
>> Andrew J. Leer
>>
>>
>> Matt Raible-3 wrote:
>> >
>> > On 1/30/07, maskkkk <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Um,
>> >>
>> >> I guess I'm afraid that there may be situations in which I need to add
>> >> more
>> >> properties to a form. (more than just Bibles) And forms are kind of
>> 2
>> >> dimensional where as objects are 3 dimensional....*agh* I'm digressing
>> to
>> >> Struts aren't I?
>> >
>> > Yep. ;-)
>> >
>> >>
>> >>
>> >>
>> >> Matt Raible-3 wrote:
>> >> >
>> >> > Why don't use use your Bible object directly instead of wrapping it
>> in
>> >> > a BibleForm object?
>> >> >
>> >> > Matt
>> >> >
>> >> > On 1/30/07, maskkkk <[EMAIL PROTECTED]> wrote:
>> >> >>
>> >> >> Let's say I'm populating my form via a given GET request parameter
>> >> >> (Constants.BIBLE_ID_REQUEST_PARAM) in the formBackingObject method.
>> >> The
>> >> >> implementation bellow works. But am I doing it right?
>> >> >>
>> >> >> I don't think I am doing it right, only because there are methods
>> in
>> >> my
>> >> >> BiblePropertyEditor such as getAsText() which seem as though they
>> >> should
>> >> >> do
>> >> >> the bulk of that work for me, but never get called.
>> >> >>
>> >> >>
>> >> >>
>> >> >> > /**
>> >> >> > * Implementation of <strong>SimpleFormController</strong> that
>> >> >> interacts
>> >> >> > with
>> >> >> > * the [EMAIL PROTECTED] OSBManager} to retrieve/persist values to
>> >> >> > the
>> >> database.
>> >> >> > */
>> >> >> > public class BibleFormController extends BaseFormController {
>> >> >> >
>> >> >> > private OsbBaseObjectManager osbBaseObjectMgr;
>> >> >> >
>> >> >> > public void setOsbBaseObjectManager(OsbBaseObjectManager
>> >> >> > osbBaseObjectMgr)
>> >> >> > {
>> >> >> > this.osbBaseObjectMgr = osbBaseObjectMgr;
>> >> >> > }
>> >> >> >
>> >> >> > /**
>> >> >> > * Step 1: In a GET
>> >> >> > * Step 1: In a POST
>> >> >> > *
>> >> >> > * In a GET:
>> >> >> > * This should return a formbacking object
>> >> >> > * for populating the display on the front end.
>> >> >> > */
>> >> >> > protected Object formBackingObject(HttpServletRequest
>> request)
>> >> >> > throws Exception
>> >> >> > {
>> >> >> > log.info("Begin: formBackingObject");
>> >> >> > String bibleId = null;
>> >> >> > BibleForm form = new BibleForm(); // Create
>> the
>> >> >> form object
>> >> >> > Bible bible = null;
>> >> >> >
>> >> >> > // If the user has clicked a link
>> >> >> > // requesting to edit an existing Bible...
>> >> >> > //
>> >> >> > // ...place that Bible's properties
>> >> >> > // in the form/command object.
>> >> >> >
>> >> >> > bibleId = (String)
>> >> >> > request.getParameter(Constants.BIBLE_ID_REQUEST_PARAM);
>> >> >> > log.debug("Request Parameter: " + bibleId);
>> >> >> > if(bibleId != null)
>> >> >> > {
>> >> >> > bible = osbBaseObjectMgr.getBible(bibleId);
>> >> >> >
>> >> >> > form.setId("" + bible.getId());
>> >> >> > form.setLocale(bible.getLocale());
>> >> >> > form.setVersion(bible.getVersion());
>> >> >> > }
>> >> >> >
>> >> >> > log.info("Exit: formBackingObject");
>> >> >> > return form;
>> >> >> > }
>> >> >> >
>> >> >> > /**
>> >> >> > * Step 2: In a GET
>> >> >> > * Step 2: In a POST
>> >> >> > *
>> >> >> > * In a GET:
>> >> >> > * This method binds the object to the form using
>> >> >> > * PropertyEditorSupports to associate an
>> >> >> > * entire object with a primitive value stored in
>> >> >> > * the form. (PropertyEditorSupports are seprate
>> >> >> > * implementation classes)
>> >> >> > *
>> >> >> > * When we say bind we mean...what the property editor
>> does,
>> >> >> > * associates an entire object with the values being
>> populated
>> >> >> > * in the form.
>> >> >> > *
>> >> >> > */
>> >> >> > protected void initBinder(HttpServletRequest request,
>> >> >> >
>> >> >> ServletRequestDataBinder binder)
>> >> >> > {
>> >> >> > log.info("Begin: initBinder");
>> >> >> > BiblePropertyEditor propertyEditor = new
>> >> >> BiblePropertyEditor();
>> >> >> >
>> >> propertyEditor.setOsbBaseObjectManger(osbBaseObjectMgr);
>> >> >> >
>> >> >> > binder.registerCustomEditor(Bible.class, "bible",
>> >> >> propertyEditor);
>> >> >> >
>> >> >> > super.initBinder(request, binder);
>> >> >> > log.info("Exit: initBinder");
>> >> >> > }
>> >> >> >
>> >> >> > /**
>> >> >> > * Step 3: In a GET
>> >> >> > * This is the place to provide any thing that is
>> >> >> > * likely to populate othe elements in the view
>> >> >> > * for instance Lists for dropdowns and tables.
>> >> >> > *
>> >> >> > */
>> >> >> > protected Map referenceData(HttpServletRequest request,
>> >> >> >
>> Object
>> >> >> command,
>> >> >> >
>> Errors
>> >> >> errors)
>> >> >> > throws Exception
>> >> >> > {
>> >> >> > log.info("Begin: referenceData");
>> >> >> > Map model = new HashMap();
>> >> >> >
>> >> >> > // Nothing at the moment...
>> >> >> >
>> >> >> > log.info("Exit: referenceData");
>> >> >> > return model;
>> >> >> > }
>> >> >> > }
>> >> >> >
>> >> >>
>> >> >> Thank you,
>> >> >> Andrew J. Leer
>> >> >> --
>> >> >> View this message in context:
>> >> >>
>> >>
>> http://www.nabble.com/Correct-Controller-Implementation--tf3142315s2369.html#a8709179
>> >> >> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > http://raibledesigns.com
>> >> >
>> >> >
>> ---------------------------------------------------------------------
>> >> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >
>> >> >
>> >> >
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Correct-Controller-Implementation--tf3142315s2369.html#a8714200
>> >> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >>
>> >
>> >
>> > --
>> > http://raibledesigns.com
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Correct-Controller-Implementation--tf3142315s2369.html#a8715917
>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> --
> http://raibledesigns.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/Correct-Controller-Implementation--tf3142315s2369.html#a8761616
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]