You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by BJ Freeman <bj...@free-man.net> on 2007/12/15 19:19:27 UTC

Re: Include of controllers

I was going thru the trunk and noticed this in all the controllers
    <include
location="component://common/webcommon/WEB-INF/common-controller.xml"/>

so there is a rule that says you can include a controller not in the
same app.


BJ Freeman sent the following on 11/10/2007 4:15 PM:
> Almost.
> when the included controller view calles a screen in the partymgr screen
> , and that screen calls for a parm that is web.xml. the parm is not
> availible for the screen and so fails.
> 
> At this time, the way I handle this is to put the parm in my Web.xml.
> 
> My suggestions was that if a call is made to a parm that would be in the
> applications, in this case partymgr, web.xml, that widget looks up the
> web.xml for that application to get it.
> 
> 
> Chris Howe sent the following on 11/10/2007 2:23 PM:
>> Okay, I've read through the thread.  In that case, I might suggest to take a step back and look at what the two functionalities were designed to accomplish.  
>>
>> Creating the mainDecoratorLocation variable in the web.xml was designed for _screen reuse. the include element in the controller.xml file was designed for request/response maintenance.  
>>
>> With that in mind, you can include another controller in your custom application and then override the view with one that points to your application.   If you wish to then include a screen from another application you can use the <include-screen> element in the screen widget and at the same time pass a parameters.mainDecoratorLocation to override the one gained from the web.xml context of the webapp being used.
>>
>> It appears that what BJ is suggesting would make the screen being called from the ofbiz application nonreusable except as decorated as it is in the ofbiz project which defeats the entire purpose of the mainDecoratorLocation variable.  Do I follow correctly?
>>
>> ----- Original Message ----
>> From: BJ Freeman <bj...@free-man.net>
>> To: dev@ofbiz.apache.org
>> Sent: Saturday, November 10, 2007 2:12:12 PM
>> Subject: Re: Include of controllers
>>
>> Chris the discussion is about using the include in the controller.
>> and that the current way of putting the locations of parameters used in
>> the widgets for screen decorators is causing a problem
>> In a lot of apps the location is called out in the web.xml
>>   <context-param>
>>   <param-name>mainDecoratorLocation</param-name>
>> <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>      <description>The location of the main-decorator screen to use for
>>  this webapp; referred to as a context variable in screen def XML
>>  files.</description>
>>    </context-param>
>>
>> The suggeston is to take the location out to the web.xml and put in the
>> widget like so.
>>
>> <decorator-screen name="CommonPartyDecorator"
>> location="component://party/widget/partymgr/CommonScreens.xml">
>>
>>
>>
>> Chris Howe sent the following on 11/9/2007 9:14 PM:
>>> I haven't been following the thread, but instead of setting it
>>  explicitly in the widgets section, you may prefer to define it in the actions
>>  section...
>>> <action>
>>>    <set field="parameters.mainDecoratorLocation"
>>  value="component://party/widget/partymgr/CommonScreens.xml"/>
>>> </action>
>>> <widget>
>>>    <include-screen name="splitScreen"/>
>>> </widget>
>>> ...
>>>   <decorator-screen name="CommonPartyDecorator"
>>  location="${parameters.mainDecoratorLocation}">
>>> <screen name="splitScreen">
>>> ...
>>> <widget>
>>>   
>>> </widget>
>>> ...
>>> or something similar that it remains a variable so that you can later
>>  split the widget section out to be it's own screen so that it can be
>>  used with the decorator in another webapp.  I don't know if the screens
>>  you're worried  about here are that complex.  This has been a better
>>  pattern for me.
>>>
>>> ----- Original Message ----
>>> From: BJ Freeman <bj...@free-man.net>
>>> To: dev@ofbiz.apache.org
>>> Sent: Friday, November 9, 2007 9:57:00 PM
>>> Subject: Re: Include of controllers
>>>
>>> Just want to make sure we are all on the same page
>>> in a widget screen
>>>                 <decorator-screen name="CommonPartyDecorator"
>>> location="${parameters.mainDecoratorLocation}">
>>>
>>> parameters.mainDecoratorLocation is in the Web.xml
>>>
>>>  <context-param>
>>>     <param-name>mainDecoratorLocation</param-name>
>>>
>>  <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>>     <description>The location of the main-decorator screen to use for
>>> this webapp; referred to as a context variable in screen def XML
>>> files.</description>
>>>   </context-param>
>>>
>>> so to "fix"
>>>                 <decorator-screen name="CommonPartyDecorator"
>>> location="component://party/widget/partymgr/CommonScreens.xml">
>>>
>>>
>>> BJ Freeman sent the following on 11/9/2007 5:17 PM:
>>>> Ok so the code that allows the context to be used in the web.xml is
>>>> being depreciated?
>>>>
>>>>
>>>> Adrian Crum sent the following on 11/9/2007 5:11 PM:
>>>>> BJ,
>>>>>
>>>>> Nothing is being reversed. You have pointed out a weakness in how
>>>  the
>>>>> some of the party manager screens are set up (they can't be
>>  reused).
>>>  I
>>>>> have confirmed they have a problem. So submitting a patch FIXES the
>>>>> issue - it doesn't reverse anything.
>>>>>
>>>>> -Adrian
>>>>>
>>>>> BJ Freeman wrote:
>>>>>
>>>>>> I will not submit a patch for what I am proposing, like a lot of
>>  my
>>>>>> code, it stays in the applications I am doing.
>>>>>> and since someone else put effort into what is in ofbiz now
>>>>>> I do not plan to put effort into reversing it.
>>>>>> :)
>>>>>>
>>>>>> Adrian Crum sent the following on 11/9/2007 4:57 PM:
>>>>>>
>>>>>>> BJ,
>>>>>>>
>>>>>>> As I mentioned before, I believe it would be better/easier to fix
>>>  the
>>>>>>> party manager screens. Including web.xml files will open up a big
>>>  can of
>>>>>>> worms.
>>>>>>>
>>>>>>> -Adrian
>>>>>>>
>>>>>>> BJ Freeman wrote:
>>>>>>>
>>>>>>>
>>>>>>>> Hans:
>>>>>>>> I did not put the CommonCommunicationEventDecorator location in
>>>  the
>>>>>>>> context in web.xml
>>>>>>>> this was done by someone else and is a standard through ofbiz as
>>>  far as
>>>>>>>> i can tell.
>>>>>>>> I take the path of least resistance.
>>>>>>>> Since it is possible to put context in the web.xml and someone
>>>  has
>>>>>>>> put a
>>>>>>>> lot of effort into refactoring ofbiz to this standard, I have no
>>>>>>>> intention of undoing it.
>>>>>>>>
>>>>>>>> so my focus for my code will be to have the web.xml included as
>>>  well,
>>>>>>>> unless the powers to be say there is going to be a change in the
>>>  best
>>>>>>>> practices.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hans Bakker sent the following on 11/7/2007 5:47 PM:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hi Bj,
>>>>>>>>>
>>>>>>>>> request (or provide a patch) that the
>>>>>>>>> CommonCommunicationEventDecorator
>>>>>>>>> is moved to the xml file as defined in the web.xml parameter.
>>>  Also
>>>>>>>>> request that the 'location' parameter is defined in the screen
>>>  you are
>>>>>>>>> using.
>>>>>>>>>
>>>>>>>>> Then you can use this screen in your own application using your
>>>  own
>>>>>>>>> decorator.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Hans
>>>>>>>>>
>>>>>>>>> On Wed, 2007-11-07 at 13:42 -0800, BJ Freeman wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> I have a controller.xml
>>>>>>>>>> it has the include for the partymgr in it.
>>>>>>>>>> I have a menu widget that calls the partmgr
>>>>>>>>>> I have the PartymgrDecoratorLocation in my web.xml
>>>>>>>>>> so I get to the find screen OK.
>>>>>>>>>> I have a few others in my web.xml as well.
>>>>>>>>>> so I can navigate.
>>>>>>>>>> however if you don't have these in your web.xml that is in the
>>>  same
>>>>>>>>>> directory as the controller.xml you are using
>>>>>>>>>> https://localhost:8443/myapp/control/partymgr
>>>>>>>>>> then you get messages like this.
>>>>>>>>>>
>>>>>>>>>> org.ofbiz.base.util.GeneralException: Error rendering screen
>>>>>>>>>>
>>   [component://party/widget/partymgr/CommunicationScreens.xml#EditCommunicationEvent]:
>>>>>>>>>> java.lang.IllegalArgumentException: Could not find screen with
>>>  name
>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>  screen
>>>>>>>>>> with
>>>>>>>>>> name [EditCommunicationEvent] (Could not find screen with name
>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>  screen
>>>>>>>>>> with
>>>>>>>>>> name [EditCommunicationEvent])
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>   
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> BJ,
>>>>>>>>>>
>>>>>>>>>> Do you have any specific examples of what you're describing?
>>>>>>>>>>
>>>>>>>>>> -Adrian
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:59 PM:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> sorry not a complete thougt
>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>> when you included another contorller
>>>>>>>>>>> and there is a commonscreen.xml defined in the web.xml of the
>>>>>>>>>>> calling
>>>>>>>>>>> controller application it causes an error.
>>>>>>>>>>> so maybe puttting the application name before commonescreens
>>>  will
>>>>>>>>>>> eliminate that.
>>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:55 PM:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>>> when you included another contorller
>>>>>>>>>>>> and it has a commonscreen.xml
>>>>>>>>>>>>
>>>>>>>>>>>> another is that when the the other widget from the included
>>>>>>>>>>>> controller
>>>>>>>>>>>> calls for a context that is in the web.xml of that
>>>  application.
>>>>>>>>>>>> it is not found.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
> 
> 
> 


Re: Include of controllers

Posted by BJ Freeman <bj...@free-man.net>.
the other option is not to use the context
location="${parameters.mainDecoratorLocation}"
and put it in the file like
location="component://product/widget/catalog/CatalogCommonScreens.xml"
in the screens this way don't have the problem at all.



Jonathon -- Improov sent the following on 12/15/2007 4:26 PM:
> The common-controller.xml should not use "main-decorator", or that would
> force every webapp in OFBiz (if they include this file) to use a
> "main-decorator" compatible with webcommon screens.
> 
> You brought up a good point. I'm now wondering if we should just get
> component://common/widget/CommonScreens.xml#requirePasswordChange to use
> GlobalDecorator instead of main-decorator.
> 
> Jonathon
> 
> BJ Freeman wrote:
>> I was going thru the trunk and noticed this in all the controllers
>>     <include
>> location="component://common/webcommon/WEB-INF/common-controller.xml"/>
>>
>> so there is a rule that says you can include a controller not in the
>> same app.
>>
>>
>> BJ Freeman sent the following on 11/10/2007 4:15 PM:
>>> Almost.
>>> when the included controller view calles a screen in the partymgr screen
>>> , and that screen calls for a parm that is web.xml. the parm is not
>>> availible for the screen and so fails.
>>>
>>> At this time, the way I handle this is to put the parm in my Web.xml.
>>>
>>> My suggestions was that if a call is made to a parm that would be in the
>>> applications, in this case partymgr, web.xml, that widget looks up the
>>> web.xml for that application to get it.
>>>
>>>
>>> Chris Howe sent the following on 11/10/2007 2:23 PM:
>>>> Okay, I've read through the thread.  In that case, I might suggest
>>>> to take a step back and look at what the two functionalities were
>>>> designed to accomplish. 
>>>> Creating the mainDecoratorLocation variable in the web.xml was
>>>> designed for _screen reuse. the include element in the
>>>> controller.xml file was designed for request/response maintenance. 
>>>> With that in mind, you can include another controller in your custom
>>>> application and then override the view with one that points to your
>>>> application.   If you wish to then include a screen from another
>>>> application you can use the <include-screen> element in the screen
>>>> widget and at the same time pass a parameters.mainDecoratorLocation
>>>> to override the one gained from the web.xml context of the webapp
>>>> being used.
>>>>
>>>> It appears that what BJ is suggesting would make the screen being
>>>> called from the ofbiz application nonreusable except as decorated as
>>>> it is in the ofbiz project which defeats the entire purpose of the
>>>> mainDecoratorLocation variable.  Do I follow correctly?
>>>>
>>>> ----- Original Message ----
>>>> From: BJ Freeman <bj...@free-man.net>
>>>> To: dev@ofbiz.apache.org
>>>> Sent: Saturday, November 10, 2007 2:12:12 PM
>>>> Subject: Re: Include of controllers
>>>>
>>>> Chris the discussion is about using the include in the controller.
>>>> and that the current way of putting the locations of parameters used in
>>>> the widgets for screen decorators is causing a problem
>>>> In a lot of apps the location is called out in the web.xml
>>>>   <context-param>
>>>>   <param-name>mainDecoratorLocation</param-name>
>>>> <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>>>
>>>>      <description>The location of the main-decorator screen to use for
>>>>  this webapp; referred to as a context variable in screen def XML
>>>>  files.</description>
>>>>    </context-param>
>>>>
>>>> The suggeston is to take the location out to the web.xml and put in the
>>>> widget like so.
>>>>
>>>> <decorator-screen name="CommonPartyDecorator"
>>>> location="component://party/widget/partymgr/CommonScreens.xml">
>>>>
>>>>
>>>>
>>>> Chris Howe sent the following on 11/9/2007 9:14 PM:
>>>>> I haven't been following the thread, but instead of setting it
>>>>  explicitly in the widgets section, you may prefer to define it in
>>>> the actions
>>>>  section...
>>>>> <action>
>>>>>    <set field="parameters.mainDecoratorLocation"
>>>>  value="component://party/widget/partymgr/CommonScreens.xml"/>
>>>>> </action>
>>>>> <widget>
>>>>>    <include-screen name="splitScreen"/>
>>>>> </widget>
>>>>> ...
>>>>>   <decorator-screen name="CommonPartyDecorator"
>>>>  location="${parameters.mainDecoratorLocation}">
>>>>> <screen name="splitScreen">
>>>>> ...
>>>>> <widget>
>>>>>   </widget>
>>>>> ...
>>>>> or something similar that it remains a variable so that you can later
>>>>  split the widget section out to be it's own screen so that it can be
>>>>  used with the decorator in another webapp.  I don't know if the
>>>> screens
>>>>  you're worried  about here are that complex.  This has been a better
>>>>  pattern for me.
>>>>> ----- Original Message ----
>>>>> From: BJ Freeman <bj...@free-man.net>
>>>>> To: dev@ofbiz.apache.org
>>>>> Sent: Friday, November 9, 2007 9:57:00 PM
>>>>> Subject: Re: Include of controllers
>>>>>
>>>>> Just want to make sure we are all on the same page
>>>>> in a widget screen
>>>>>                 <decorator-screen name="CommonPartyDecorator"
>>>>> location="${parameters.mainDecoratorLocation}">
>>>>>
>>>>> parameters.mainDecoratorLocation is in the Web.xml
>>>>>
>>>>>  <context-param>
>>>>>     <param-name>mainDecoratorLocation</param-name>
>>>>>
>>>>  <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>>>
>>>>>     <description>The location of the main-decorator screen to use for
>>>>> this webapp; referred to as a context variable in screen def XML
>>>>> files.</description>
>>>>>   </context-param>
>>>>>
>>>>> so to "fix"
>>>>>                 <decorator-screen name="CommonPartyDecorator"
>>>>> location="component://party/widget/partymgr/CommonScreens.xml">
>>>>>
>>>>>
>>>>> BJ Freeman sent the following on 11/9/2007 5:17 PM:
>>>>>> Ok so the code that allows the context to be used in the web.xml is
>>>>>> being depreciated?
>>>>>>
>>>>>>
>>>>>> Adrian Crum sent the following on 11/9/2007 5:11 PM:
>>>>>>> BJ,
>>>>>>>
>>>>>>> Nothing is being reversed. You have pointed out a weakness in how
>>>>>  the
>>>>>>> some of the party manager screens are set up (they can't be
>>>>  reused).
>>>>>  I
>>>>>>> have confirmed they have a problem. So submitting a patch FIXES the
>>>>>>> issue - it doesn't reverse anything.
>>>>>>>
>>>>>>> -Adrian
>>>>>>>
>>>>>>> BJ Freeman wrote:
>>>>>>>
>>>>>>>> I will not submit a patch for what I am proposing, like a lot of
>>>>  my
>>>>>>>> code, it stays in the applications I am doing.
>>>>>>>> and since someone else put effort into what is in ofbiz now
>>>>>>>> I do not plan to put effort into reversing it.
>>>>>>>> :)
>>>>>>>>
>>>>>>>> Adrian Crum sent the following on 11/9/2007 4:57 PM:
>>>>>>>>
>>>>>>>>> BJ,
>>>>>>>>>
>>>>>>>>> As I mentioned before, I believe it would be better/easier to fix
>>>>>  the
>>>>>>>>> party manager screens. Including web.xml files will open up a big
>>>>>  can of
>>>>>>>>> worms.
>>>>>>>>>
>>>>>>>>> -Adrian
>>>>>>>>>
>>>>>>>>> BJ Freeman wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hans:
>>>>>>>>>> I did not put the CommonCommunicationEventDecorator location in
>>>>>  the
>>>>>>>>>> context in web.xml
>>>>>>>>>> this was done by someone else and is a standard through ofbiz as
>>>>>  far as
>>>>>>>>>> i can tell.
>>>>>>>>>> I take the path of least resistance.
>>>>>>>>>> Since it is possible to put context in the web.xml and someone
>>>>>  has
>>>>>>>>>> put a
>>>>>>>>>> lot of effort into refactoring ofbiz to this standard, I have no
>>>>>>>>>> intention of undoing it.
>>>>>>>>>>
>>>>>>>>>> so my focus for my code will be to have the web.xml included as
>>>>>  well,
>>>>>>>>>> unless the powers to be say there is going to be a change in the
>>>>>  best
>>>>>>>>>> practices.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hans Bakker sent the following on 11/7/2007 5:47 PM:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hi Bj,
>>>>>>>>>>>
>>>>>>>>>>> request (or provide a patch) that the
>>>>>>>>>>> CommonCommunicationEventDecorator
>>>>>>>>>>> is moved to the xml file as defined in the web.xml parameter.
>>>>>  Also
>>>>>>>>>>> request that the 'location' parameter is defined in the screen
>>>>>  you are
>>>>>>>>>>> using.
>>>>>>>>>>>
>>>>>>>>>>> Then you can use this screen in your own application using your
>>>>>  own
>>>>>>>>>>> decorator.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> Hans
>>>>>>>>>>>
>>>>>>>>>>> On Wed, 2007-11-07 at 13:42 -0800, BJ Freeman wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> I have a controller.xml
>>>>>>>>>>>> it has the include for the partymgr in it.
>>>>>>>>>>>> I have a menu widget that calls the partmgr
>>>>>>>>>>>> I have the PartymgrDecoratorLocation in my web.xml
>>>>>>>>>>>> so I get to the find screen OK.
>>>>>>>>>>>> I have a few others in my web.xml as well.
>>>>>>>>>>>> so I can navigate.
>>>>>>>>>>>> however if you don't have these in your web.xml that is in the
>>>>>  same
>>>>>>>>>>>> directory as the controller.xml you are using
>>>>>>>>>>>> https://localhost:8443/myapp/control/partymgr
>>>>>>>>>>>> then you get messages like this.
>>>>>>>>>>>>
>>>>>>>>>>>> org.ofbiz.base.util.GeneralException: Error rendering screen
>>>>>>>>>>>>
>>>>  
>>>> [component://party/widget/partymgr/CommunicationScreens.xml#EditCommunicationEvent]:
>>>>
>>>>>>>>>>>> java.lang.IllegalArgumentException: Could not find screen with
>>>>>  name
>>>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>>>  screen
>>>>>>>>>>>> with
>>>>>>>>>>>> name [EditCommunicationEvent] (Could not find screen with name
>>>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>>>  screen
>>>>>>>>>>>> with
>>>>>>>>>>>> name [EditCommunicationEvent])
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>  
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> BJ,
>>>>>>>>>>>>
>>>>>>>>>>>> Do you have any specific examples of what you're describing?
>>>>>>>>>>>>
>>>>>>>>>>>> -Adrian
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:59 PM:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> sorry not a complete thougt
>>>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>>>> when you included another contorller
>>>>>>>>>>>>> and there is a commonscreen.xml defined in the web.xml of the
>>>>>>>>>>>>> calling
>>>>>>>>>>>>> controller application it causes an error.
>>>>>>>>>>>>> so maybe puttting the application name before commonescreens
>>>>>  will
>>>>>>>>>>>>> eliminate that.
>>>>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:55 PM:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>>>>> when you included another contorller
>>>>>>>>>>>>>> and it has a commonscreen.xml
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> another is that when the the other widget from the included
>>>>>>>>>>>>>> controller
>>>>>>>>>>>>>> calls for a context that is in the web.xml of that
>>>>>  application.
>>>>>>>>>>>>>> it is not found.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
> 
> 
> 
> 


Re: Include of controllers

Posted by Jonathon -- Improov <jo...@improov.com>.
The common-controller.xml should not use "main-decorator", or that would force every webapp in 
OFBiz (if they include this file) to use a "main-decorator" compatible with webcommon screens.

You brought up a good point. I'm now wondering if we should just get 
component://common/widget/CommonScreens.xml#requirePasswordChange to use GlobalDecorator instead 
of main-decorator.

Jonathon

BJ Freeman wrote:
> I was going thru the trunk and noticed this in all the controllers
>     <include
> location="component://common/webcommon/WEB-INF/common-controller.xml"/>
> 
> so there is a rule that says you can include a controller not in the
> same app.
> 
> 
> BJ Freeman sent the following on 11/10/2007 4:15 PM:
>> Almost.
>> when the included controller view calles a screen in the partymgr screen
>> , and that screen calls for a parm that is web.xml. the parm is not
>> availible for the screen and so fails.
>>
>> At this time, the way I handle this is to put the parm in my Web.xml.
>>
>> My suggestions was that if a call is made to a parm that would be in the
>> applications, in this case partymgr, web.xml, that widget looks up the
>> web.xml for that application to get it.
>>
>>
>> Chris Howe sent the following on 11/10/2007 2:23 PM:
>>> Okay, I've read through the thread.  In that case, I might suggest to take a step back and look at what the two functionalities were designed to accomplish.  
>>>
>>> Creating the mainDecoratorLocation variable in the web.xml was designed for _screen reuse. the include element in the controller.xml file was designed for request/response maintenance.  
>>>
>>> With that in mind, you can include another controller in your custom application and then override the view with one that points to your application.   If you wish to then include a screen from another application you can use the <include-screen> element in the screen widget and at the same time pass a parameters.mainDecoratorLocation to override the one gained from the web.xml context of the webapp being used.
>>>
>>> It appears that what BJ is suggesting would make the screen being called from the ofbiz application nonreusable except as decorated as it is in the ofbiz project which defeats the entire purpose of the mainDecoratorLocation variable.  Do I follow correctly?
>>>
>>> ----- Original Message ----
>>> From: BJ Freeman <bj...@free-man.net>
>>> To: dev@ofbiz.apache.org
>>> Sent: Saturday, November 10, 2007 2:12:12 PM
>>> Subject: Re: Include of controllers
>>>
>>> Chris the discussion is about using the include in the controller.
>>> and that the current way of putting the locations of parameters used in
>>> the widgets for screen decorators is causing a problem
>>> In a lot of apps the location is called out in the web.xml
>>>   <context-param>
>>>   <param-name>mainDecoratorLocation</param-name>
>>> <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>>      <description>The location of the main-decorator screen to use for
>>>  this webapp; referred to as a context variable in screen def XML
>>>  files.</description>
>>>    </context-param>
>>>
>>> The suggeston is to take the location out to the web.xml and put in the
>>> widget like so.
>>>
>>> <decorator-screen name="CommonPartyDecorator"
>>> location="component://party/widget/partymgr/CommonScreens.xml">
>>>
>>>
>>>
>>> Chris Howe sent the following on 11/9/2007 9:14 PM:
>>>> I haven't been following the thread, but instead of setting it
>>>  explicitly in the widgets section, you may prefer to define it in the actions
>>>  section...
>>>> <action>
>>>>    <set field="parameters.mainDecoratorLocation"
>>>  value="component://party/widget/partymgr/CommonScreens.xml"/>
>>>> </action>
>>>> <widget>
>>>>    <include-screen name="splitScreen"/>
>>>> </widget>
>>>> ...
>>>>   <decorator-screen name="CommonPartyDecorator"
>>>  location="${parameters.mainDecoratorLocation}">
>>>> <screen name="splitScreen">
>>>> ...
>>>> <widget>
>>>>   
>>>> </widget>
>>>> ...
>>>> or something similar that it remains a variable so that you can later
>>>  split the widget section out to be it's own screen so that it can be
>>>  used with the decorator in another webapp.  I don't know if the screens
>>>  you're worried  about here are that complex.  This has been a better
>>>  pattern for me.
>>>> ----- Original Message ----
>>>> From: BJ Freeman <bj...@free-man.net>
>>>> To: dev@ofbiz.apache.org
>>>> Sent: Friday, November 9, 2007 9:57:00 PM
>>>> Subject: Re: Include of controllers
>>>>
>>>> Just want to make sure we are all on the same page
>>>> in a widget screen
>>>>                 <decorator-screen name="CommonPartyDecorator"
>>>> location="${parameters.mainDecoratorLocation}">
>>>>
>>>> parameters.mainDecoratorLocation is in the Web.xml
>>>>
>>>>  <context-param>
>>>>     <param-name>mainDecoratorLocation</param-name>
>>>>
>>>  <param-value>component://party/widget/partymgr/CommonScreens.xml</param-value>
>>>>     <description>The location of the main-decorator screen to use for
>>>> this webapp; referred to as a context variable in screen def XML
>>>> files.</description>
>>>>   </context-param>
>>>>
>>>> so to "fix"
>>>>                 <decorator-screen name="CommonPartyDecorator"
>>>> location="component://party/widget/partymgr/CommonScreens.xml">
>>>>
>>>>
>>>> BJ Freeman sent the following on 11/9/2007 5:17 PM:
>>>>> Ok so the code that allows the context to be used in the web.xml is
>>>>> being depreciated?
>>>>>
>>>>>
>>>>> Adrian Crum sent the following on 11/9/2007 5:11 PM:
>>>>>> BJ,
>>>>>>
>>>>>> Nothing is being reversed. You have pointed out a weakness in how
>>>>  the
>>>>>> some of the party manager screens are set up (they can't be
>>>  reused).
>>>>  I
>>>>>> have confirmed they have a problem. So submitting a patch FIXES the
>>>>>> issue - it doesn't reverse anything.
>>>>>>
>>>>>> -Adrian
>>>>>>
>>>>>> BJ Freeman wrote:
>>>>>>
>>>>>>> I will not submit a patch for what I am proposing, like a lot of
>>>  my
>>>>>>> code, it stays in the applications I am doing.
>>>>>>> and since someone else put effort into what is in ofbiz now
>>>>>>> I do not plan to put effort into reversing it.
>>>>>>> :)
>>>>>>>
>>>>>>> Adrian Crum sent the following on 11/9/2007 4:57 PM:
>>>>>>>
>>>>>>>> BJ,
>>>>>>>>
>>>>>>>> As I mentioned before, I believe it would be better/easier to fix
>>>>  the
>>>>>>>> party manager screens. Including web.xml files will open up a big
>>>>  can of
>>>>>>>> worms.
>>>>>>>>
>>>>>>>> -Adrian
>>>>>>>>
>>>>>>>> BJ Freeman wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hans:
>>>>>>>>> I did not put the CommonCommunicationEventDecorator location in
>>>>  the
>>>>>>>>> context in web.xml
>>>>>>>>> this was done by someone else and is a standard through ofbiz as
>>>>  far as
>>>>>>>>> i can tell.
>>>>>>>>> I take the path of least resistance.
>>>>>>>>> Since it is possible to put context in the web.xml and someone
>>>>  has
>>>>>>>>> put a
>>>>>>>>> lot of effort into refactoring ofbiz to this standard, I have no
>>>>>>>>> intention of undoing it.
>>>>>>>>>
>>>>>>>>> so my focus for my code will be to have the web.xml included as
>>>>  well,
>>>>>>>>> unless the powers to be say there is going to be a change in the
>>>>  best
>>>>>>>>> practices.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hans Bakker sent the following on 11/7/2007 5:47 PM:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Bj,
>>>>>>>>>>
>>>>>>>>>> request (or provide a patch) that the
>>>>>>>>>> CommonCommunicationEventDecorator
>>>>>>>>>> is moved to the xml file as defined in the web.xml parameter.
>>>>  Also
>>>>>>>>>> request that the 'location' parameter is defined in the screen
>>>>  you are
>>>>>>>>>> using.
>>>>>>>>>>
>>>>>>>>>> Then you can use this screen in your own application using your
>>>>  own
>>>>>>>>>> decorator.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Hans
>>>>>>>>>>
>>>>>>>>>> On Wed, 2007-11-07 at 13:42 -0800, BJ Freeman wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> I have a controller.xml
>>>>>>>>>>> it has the include for the partymgr in it.
>>>>>>>>>>> I have a menu widget that calls the partmgr
>>>>>>>>>>> I have the PartymgrDecoratorLocation in my web.xml
>>>>>>>>>>> so I get to the find screen OK.
>>>>>>>>>>> I have a few others in my web.xml as well.
>>>>>>>>>>> so I can navigate.
>>>>>>>>>>> however if you don't have these in your web.xml that is in the
>>>>  same
>>>>>>>>>>> directory as the controller.xml you are using
>>>>>>>>>>> https://localhost:8443/myapp/control/partymgr
>>>>>>>>>>> then you get messages like this.
>>>>>>>>>>>
>>>>>>>>>>> org.ofbiz.base.util.GeneralException: Error rendering screen
>>>>>>>>>>>
>>>   [component://party/widget/partymgr/CommunicationScreens.xml#EditCommunicationEvent]:
>>>>>>>>>>> java.lang.IllegalArgumentException: Could not find screen with
>>>>  name
>>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>>  screen
>>>>>>>>>>> with
>>>>>>>>>>> name [EditCommunicationEvent] (Could not find screen with name
>>>>>>>>>>> [CommonCommunicationEventDecorator] in the same file as the
>>>>  screen
>>>>>>>>>>> with
>>>>>>>>>>> name [EditCommunicationEvent])
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>   
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> BJ,
>>>>>>>>>>>
>>>>>>>>>>> Do you have any specific examples of what you're describing?
>>>>>>>>>>>
>>>>>>>>>>> -Adrian
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:59 PM:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> sorry not a complete thougt
>>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>>> when you included another contorller
>>>>>>>>>>>> and there is a commonscreen.xml defined in the web.xml of the
>>>>>>>>>>>> calling
>>>>>>>>>>>> controller application it causes an error.
>>>>>>>>>>>> so maybe puttting the application name before commonescreens
>>>>  will
>>>>>>>>>>>> eliminate that.
>>>>>>>>>>>> BJ Freeman sent the following on 11/5/2007 3:55 PM:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> This is not a real bug.
>>>>>>>>>>>>> when you included another contorller
>>>>>>>>>>>>> and it has a commonscreen.xml
>>>>>>>>>>>>>
>>>>>>>>>>>>> another is that when the the other widget from the included
>>>>>>>>>>>>> controller
>>>>>>>>>>>>> calls for a context that is in the web.xml of that
>>>>  application.
>>>>>>>>>>>>> it is not found.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>>
> 
>