about multiple lookup

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

about multiple lookup

Michael Xu (xudong)
hi all,

In ofbiz form, we can use lookup controller for fields which link to
entities. But the lookup controller only support to return single value. How
to implement a multiple lookup?

Looking into source code, it seems that we have to extend a new controller
in form widget schema and implement it in the form render. Is it a correct
way to go?

BTW: In my opinion, it is not flexible to extend form widget in current
design. (correct me if I am wrong). Let's take one example.

<form name="AssignGlAccount" type="single"
target="createGlAccountOrganization" title="" default-map-name="account"
        header-row-style="header-row" default-table-style="basic-table">
        <field name="glAccountId">
            <drop-down>
                <entity-options entity-name="GlAccount"
description="${accountCode} - ${accountName} [${glAccountId}]">
                    <entity-order-by field-name="accountCode"/>
                </entity-options>
            </drop-down>
        </field>
...
</form>

Here, we have to use <drop-down> tag to tell system to render a HTML
drop-down component. But what if a customized field? Then do we have to
change form widget schema for that field? And then add the render logic in
the long switch-cases?

Maybe we can refactor the design, like this:

<form name="AssignGlAccount" type="single"
target="createGlAccountOrganization" title="" default-map-name="account"
        header-row-style="header-row" default-table-style="basic-table">
        <field name="glAccountId">
            <controller name="drop-down">
            <!--
                for new non-standard controller, we can define like this:
<controller name="org.ofbiz.FancyDropDown">
             -->
                <param key="entity-name" value="GLAccount"/>
                <param key="description" value="...."/>
                <param key="entity-order-by" value="accountCode"/>
            <!--
                for new non-standard controller, we can define new
parameters
             -->
        </field>
...
</form>

with the new design, then we don't need to break the schema and change the
core code of render logic. Instead, we just need to implement a new
controller from a predefined controller interface. And then we can reuse it
in all forms.

(In here, due to the limitation of current form widget, we have to give up
form and use FTL directly.)

--
Regards,
Michael Xu (xudong)
www.wizitsoft.com | Office: (8610) 6267 0615 ext 806 | Mobile: (86) 135 0135
9807 | Fax: (8610) 62670096
Reply | Threaded
Open this post in threaded view
|

Re: about multiple lookup

Michael Xu (xudong)
Any hint or advice?

--
Regards,
Michael Xu (xudong)
www.wizitsoft.com | Office: (8610) 6267 0615 ext 806 | Mobile: (86) 135 0135
9807 | Fax: (8610) 62670096


On Thu, Jan 7, 2010 at 12:29 PM, Michael Xu (xudong)
<[hidden email]>wrote:

> hi all,
>
> In ofbiz form, we can use lookup controller for fields which link to
> entities. But the lookup controller only support to return single value. How
> to implement a multiple lookup?
>
> Looking into source code, it seems that we have to extend a new controller
> in form widget schema and implement it in the form render. Is it a correct
> way to go?
>
> BTW: In my opinion, it is not flexible to extend form widget in current
> design. (correct me if I am wrong). Let's take one example.
>
> <form name="AssignGlAccount" type="single"
> target="createGlAccountOrganization" title="" default-map-name="account"
>         header-row-style="header-row" default-table-style="basic-table">
>         <field name="glAccountId">
>             <drop-down>
>                 <entity-options entity-name="GlAccount"
> description="${accountCode} - ${accountName} [${glAccountId}]">
>                     <entity-order-by field-name="accountCode"/>
>                 </entity-options>
>             </drop-down>
>         </field>
> ...
> </form>
>
> Here, we have to use <drop-down> tag to tell system to render a HTML
> drop-down component. But what if a customized field? Then do we have to
> change form widget schema for that field? And then add the render logic in
> the long switch-cases?
>
> Maybe we can refactor the design, like this:
>
> <form name="AssignGlAccount" type="single"
> target="createGlAccountOrganization" title="" default-map-name="account"
>         header-row-style="header-row" default-table-style="basic-table">
>         <field name="glAccountId">
>             <controller name="drop-down">
>             <!--
>                 for new non-standard controller, we can define like this:
> <controller name="org.ofbiz.FancyDropDown">
>              -->
>                 <param key="entity-name" value="GLAccount"/>
>                 <param key="description" value="...."/>
>                 <param key="entity-order-by" value="accountCode"/>
>             <!--
>                 for new non-standard controller, we can define new
> parameters
>              -->
>         </field>
> ...
> </form>
>
> with the new design, then we don't need to break the schema and change the
> core code of render logic. Instead, we just need to implement a new
> controller from a predefined controller interface. And then we can reuse it
> in all forms.
>
> (In here, due to the limitation of current form widget, we have to give up
> form and use FTL directly.)
>
> --
> Regards,
> Michael Xu (xudong)
> www.wizitsoft.com | Office: (8610) 6267 0615 ext 806 | Mobile: (86) 135
> 0135 9807 | Fax: (8610) 62670096
>