to clarify
app-main-decorator means appname-main-decorator

BJ Freeman sent the following on 11/23/2007 4:07 AM:
> I think the focus got lost in my explaining what i am doing.
> 1) the main-decorator defines a path in that application to where it is.
> 2) the main-decorator is used in the local apps widgets and that may be
> where the problem is. Since from this conversation is sounds like it was
> meant to be used for the
> component://common/widget/CommonScreens.xml#GlobalDecorator
> 3)So if I am correct then the main-decorator is not following the best
> practices in each app by being used by the apps widgets.
> 4)the uses in the app sould have a app-main-decorator that the
> application widget use.
> 5)if this was implemented, then the problem goes away becuase I can
> include the app-main-decorator in my web.xml.
> 
> 
> 
> Scott Gray sent the following on 11/22/2007 10:22 PM:
>> This whole scenario makes no sense to me and I really can't see any benefits
>> to be had from pursuing it.
>>
>> Regards
>> Scott
>>
>> On 23/11/2007, Jonathon -- Improov <[EMAIL PROTECTED]> wrote:
>>> Oh yeah, that's right! Good catch.
>>>
>>> BJ, you'll have to change
>>> component://common/widget/CommonScreens.xml#GlobalDecorator a bit.
>>>
>>> Add a higher-priority overriding variable say "forceAppHeaderTemplate". If
>>> that parameter is
>>> present, "appHeaderTemplate" will be ignored. Just FYI, the
>>> "appHeaderTemplate" deals with the
>>> horizontal menu at the top of the screen. I imagine you would want your
>>> own menu items there.
>>>
>>> All these fixes will mean you won't have to change any screen widgets in
>>> order to bundle them into
>>> your special giant webapp.
>>>
>>> Is there anyone else doing this giant webapp pattern? I've only ever been
>>> asked to extend an
>>> original webapp and mount it on a different request path, at most. The
>>> problem that BJ encountners
>>> should only come when we combine 2 or more original webapps together.
>>>
>>> Let me know how it goes!
>>>
>>> Jonathon
>>>
>>> Scott Gray wrote:
>>>> How on earth could this work?  Each main-decorator specifies an
>>>> appheaderTemplate which displays the navigation menu for that
>>> application,
>>>> how is the user navigating between the various applications that you
>>> have
>>>> bundled into one?  Have you replaced/altered the GlobalDecorator to
>>> display
>>>> the "sub" applications?
>>>>
>>>> I really don't think your following best practices here and that is
>>> exactly
>>>> why you are having troubles.  If you want to have a single component in
>>>> which to maintain your customizations you should follow the ecomclone
>>>> example and put a webapp entry for each base app in your
>>> ofbiz-component.xml
>>>> .
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>> On 23/11/2007, Jonathon -- Improov <[EMAIL PROTECTED]> wrote:
>>>>> BJ,
>>>>>
>>>>> Understood. As I had suspected, you wanted a single look, single
>>>>> application, one tab.
>>>>>
>>>>>> I am not moving any code from the trunk or ver 4.0 into my app.
>>>>> Yes, you're doing great extending OFBiz cleanly.
>>>>>
>>>>>> If I changes something like say the order statuses then the code I
>>>>> changed,
>>>>>> as well as the screens are in my application.
>>>>> Sounds right. Extension codes are cleanly separated from original OFBiz
>>>>> codes.
>>>>>
>>>>>> to get back to the original problem I need a way to declare the
>>>>>> mainDecoratorLocation that has different paths so it can be read when
>>>>> the
>>>>>> controller for that component is read.
>>>>> As mentioned, you need to change ConfigXMLReader, possibly
>>> ControlServlet
>>>>> and RequestManager. Just
>>>>> add a new top-level (below <site-conf>) element called
>>>>> "<main-decorator-loc>". The ConfigXMLReader
>>>>> will prepend the webapp name to "mainDecoratorLocation", so you get
>>>>> something like
>>>>> "ordermgr:mainDecoratorLocation".
>>>>>
>>>>> Or easier, simply change those same classes to read the web.xml file
>>>>> instead. Read the web.xml
>>>>> file in the same folder as the included (<include>) controller.xml .
>>>>>
>>>>>> then I will let what ever reads it preappend the component name to
>>>>>> mainDecoratorLocation, and track it.
>>>>> You need to change ModelScreenWidget, and add some additional
>>> processing
>>>>> for attribute "location".
>>>>>
>>>>> Whenever ModelScreenWidget sees in attribute "location" a value of
>>>>> "${parameters.mainDecoratorLocation}", it will create a
>>>>> FlexibleStringExpander with string
>>>>> "${parameters.ordermgr:mainDecoratorLocation}" instead.
>>>>>
>>>>> I too love to cleanly organize code like this, rather than mess up
>>> OFBiz's
>>>>> internals. I wish you
>>>>> success in implementing this, which is easy enough. Hope you can get
>>> this
>>>>> into OFBiz SVN so I can
>>>>> have it too. :)
>>>>>
>>>>> Jonathon
>>>>> BJ Freeman wrote:
>>>>>> Just to clarify, I consider my app an overlay.
>>>>>> I am not moving any code from the trunk or ver 4.0 into my app.
>>>>>> for instance I am merging two ftl in Ordermgr.
>>>>>> I do create a widget but the ftl are till in ordermgr.
>>>>>> this saves a lot of re-integration when the trunk or relase base
>>>>> changes.
>>>>>> so client will see what ever the ordermgr controller serves up once
>>> the
>>>>>> client does an action.
>>>>>>
>>>>>> If I changes something like say the order statuses then the code I
>>>>>> changed, as well as the screens are in my application.
>>>>>>
>>>>>> to return to my menu, they click on the only tab visible, which is my
>>>>>> application tab.
>>>>>>
>>>>>> I do have Ecas and services in my app that extends ofbiz, but is
>>> unique
>>>>>> to Yahoo functions.
>>>>>>
>>>>>> so to upgrade from the release to the trunk, I just move my app into
>>> the
>>>>>> trunk copy I made and add the folder to the trunks component-load.xml
>>>>>>
>>>>>> to get back to the original problem I need a way to declare the
>>>>>> mainDecoratorLocation that has different paths so it can be read when
>>>>>> the controller for that component is read.
>>>>>> then I will let what ever reads it preappend the component name to
>>>>>> mainDecoratorLocation, and track it.
>>>>>>
>>>>>> so time to dig into the code.
>>>>>> :)
>>>>>>
>>>>>>
>>>>>> Jonathon -- Improov sent the following on 11/22/2007 3:22 AM:
>>>>>>> Your use case seems valid.
>>>>>>>
>>>>>>> In a nutshell, you're simply cloning a webapp, and then extending it
>>>>>>> with your own requests and features.
>>>>>>>
>>>>>>> That's great. It means you won't have to repeat the scores of request
>>>>>>> maps in the webapp you're cloning.
>>>>>>>
>>>>>>> That said, it's pretty scary to see 6 webapps rolled into 1 (your
>>>>> custom
>>>>>>> webapp, where you extend original OFBiz codes). Still, it's just a
>>>>>>> matter of splitting up those 6 webapps into 6 custom webapps,
>>> something
>>>>>>> you may do when you have time.
>>>>>>>
>>>>>>> I can see where having the mainDecoratorLocation parameter tied to
>>> the
>>>>>>> webapp (controller.xml) can be useful. But I find it hard to vote for
>>>>>>> making this extension to the OFBiz framework. You can simply extend
>>>>>>> webapp "workeffort" with "myworkeffort", and use the same
>>>>>>> mainDecoratorLocation that "workeffort" uses. In short, there's a
>>>>> simple
>>>>>>> and useful workaround now.
>>>>>>>
>>>>>>> Over time, it will be nice to be able to clone "workeffort" and let
>>> it
>>>>>>> use its own mainDecoratorLocation, while my extensions in
>>>>> "myworkeffort"
>>>>>>> use a different mainDecoratorLocation. No clash.
>>>>>>>
>>>>>>> I think I've worn myself out trying to explain technical issues in
>>>>>>> technical terms. Let me try an analogy. So, for the last time...
>>>>>>>
>>>>>>> Customer: "I want a hamburger."
>>>>>>>
>>>>>>> Cashier: "What's the code to activate my POS machine?"
>>>>>>>
>>>>>>> Customer: "I don't know?"
>>>>>>>
>>>>>>> Cashier: "Sorry, you need to know, or no hamburger for you."
>>>>>>>
>>>>>>> Customer: "Don't you know?"
>>>>>>>
>>>>>>> Cashier: "I know it for that other POS machine, not this one. You're
>>>>>>> ordering a hamburger from this one, so I can't serve you unless you
>>> got
>>>>>>> the code!"
>>>>>>>
>>>>>>> Customer: "I want to talk to your manager."
>>>>>>>
>>>>>>> Cashier: "Alright. He'll probably ask you write some codes to read
>>> the
>>>>>>> web.xml file in that other POS machine and retrieve the code
>>>>>>> (mainDecoratorLocation) there, so be prepared."
>>>>>>>
>>>>>>> Jonathon
>>>>>>>
>>>>>>> BJ Freeman wrote:
>>>>>>>> I have some screens I handle differently.
>>>>>>>> I have kept from going crazy by calling the ones and let the
>>>>> controller
>>>>>>>> in that app handle it.
>>>>>>>> I have not had any problems so far, except for mainDecoratorLocation
>>>>>>>>
>>>>>>>> and from what I am reading it should not be where it is to follow
>>> best
>>>>>>>> practices.
>>>>>>>>
>>>>>>>> question is where to put it.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Chris Howe sent the following on 11/22/2007 12:10 AM:
>>>>>>>>> Why are you opposed to running 6 separate webapps under a
>>> component?
>>>>>>>>> mycomponent/webapp
>>>>>>>>>                                    /myworkeffort
>>>>>>>>>                                    /mypartymgr
>>>>>>>>>                                    /mymarketing
>>>>>>>>>                                    /myordermgr
>>>>>>>>>                                    /myaccounting
>>>>>>>>>
>>>>>>>>>                                    /myyahoo
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I can almost guarantee you'll drive yourself insane with
>>> request-maps
>>>>>>>>> and view-maps overriding each other and giving unexpected results.
>>>>>>>>>
>>>>>>>>> ----- Original Message ----
>>>>>>>>> From: BJ Freeman <[EMAIL PROTECTED]>
>>>>>>>>> To: [email protected]
>>>>>>>>> Sent: Thursday, November 22, 2007 1:58:37 AM
>>>>>>>>> Subject: Re: mainDecoratorLocation change to
>>>>>>>>> [applicationname]mainDecoratorLocation
>>>>>>>>>
>>>>>>>>> my controller has
>>>>>>>>>
>>>>>>>>>   <!-- request handler for workeffort specific calls -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://workeffort/webapp/workeffort/WEB-INF/controller.xml"/>
>>>>>>>>>     <!-- request handler for partymgr specific calls -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://party/webapp/partymgr/WEB-INF/controller.xml"/>
>>>>>>>>>    <!-- request handler for marketing specific calls -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://marketing/webapp/marketing/WEB-INF/controller.xml"/>
>>>>>>>>>    <!-- request handler for ordermgr specific calls -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://order/webapp/ordermgr/WEB-INF/controller.xml"/>
>>>>>>>>>    <!-- request handler for accounting specific calls -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://accounting/webapp/accounting/WEB-INF/controller.xml"/>
>>>>>>>>>     <!-- request handler for yahoo specific calls note this should
>>> be
>>>>>>>>> the last one loaded -->
>>>>>>>>>     <include
>>>>>>>>>
>>> location="component://yahoo/webapp/yahoo/WEB-INF/businessesnetworcontroller.xml"/>
>>>>>>>>>
>>>>>>>>> the last one is mine.
>>>>>>>>> I have a menu that has a target of
>>>>>>>>>         <menu-item name="partymgr"
>>>>>>>>> title="${uiLabelMap.YahooPatrymgr}"><link
>>>>>>>>>  target="partymgr"/></menu-item>
>>>>>>>>>
>>>>>>>>> and in my controller I have
>>>>>>>>>    <view-map name="partymgr" type="screen"
>>>>>>>>>
>>> page="component://party/widget/partymgr/PartyScreens.xml#findparty"/>
>>>>>>>>> now if I don't have a mainDecoratorLocation defined in my web.xmlfor
>>>>>>>>>   <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 screen for PartyScreens complains it can not find it.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Chris Howe sent the following on 11/21/2007 10:16 PM:
>>>>>>>>>> Making the variable _name webapp specific would break the entire
>>>>>>>>>  point of the variable.
>>>>>>>>>> The variable is webapp specific (meaning it's defined by the
>>>>> webapp),
>>>>>>>>>  but the variable _name is not.  There are no
>>>>>>>>>  partyMainDecoratorLocation variables, only mainDecoratorLocation.
>>>>>>>>>> BJ,  would it be possible for you to explain the webapp your
>>>>>>>>>  developing.  Off the top of my head, I'm unable to picture a
>>>>>>>>> scenario where
>>>>>>>>>  wanting to maintain the decorator for two web applications is
>>>>>>>>> beneficial
>>>>>>>>>  and would keep one sane.  The only scenario that I can think of
>>> that
>>>>>>>>>  even comes close is because of two different conventions being
>>> used
>>>>>>>>> in the
>>>>>>>>>  screens of different components.
>>>>>>>>>> ----- Original Message ----
>>>>>>>>>> From: Jonathon -- Improov <[EMAIL PROTECTED]>
>>>>>>>>>> To: [email protected]
>>>>>>>>>> Sent: Thursday, November 22, 2007 12:03:18 AM
>>>>>>>>>> Subject: Re: mainDecoratorLocation change to
>>>>>>>>>  [applicationname]mainDecoratorLocation
>>>>>>>>>>  > Making the variable name webapp specific breaks the entire
>>> point
>>>>>>>>>  of
>>>>>>>>>>  the
>>>>>>>>>>  > variable.
>>>>>>>>>>
>>>>>>>>>> The way the screen widgets are written now, the parameter
>>>>>>>>>>  "mainDecoratorLocation" is already webapp-specific.
>>>>>>>>>>
>>>>>>>>>> The key question is where we want to tie mainDecoratorLocation to.
>>>>> If
>>>>>>>>>>  it is specific to webapps, we tie it to controller.xml, so that
>>>>>>>>>> views defined in a webapp will
>>>>>>>>>>  always use the decorator defined for that webapp. But if it is
>>>>>>>>>> specific to an OFBiz component,
>>>>>>>>>>  then we tie it to a component config, like in
>>>>>>>>>> component://party/config/SomeConfigFile.xml
>>>>>>>>>  .
>>>>>>>>>> Obviously, the screen widgets expect a correct value from
>>>>>>>>>>  ${parameters.mainDecoratorLocation}. Where should this be
>>>>>>>>>> specified? If it is not webapp-specific, then
>>>>>>>>>  does
>>>>>>>>>>  that imply screen widgets look for a global OFBiz-wide
>>>>>>>>>> ${parameters.mainDecoratorLocation}
>>>>>>>>>>  somewhere?
>>>>>>>>>>
>>>>>>>>>> If the variable name "mainDecoratorLocation" wasn't
>>> webapp-specific,
>>>>>>>>>  we
>>>>>>>>>>  wouldn't have this thread complaining about clashing or missing
>>>>>>>>>> "mainDecoratorLocation"
>>>>>>>>>>  parameters when combining controller.xml(s) from multiple
>>> webapps.
>>>>>>>>>>  > For example, do you determine the variable from the included
>>>>>>>>>>  controller of
>>>>>>>>>>  > the request-map or from the view-map.  You would likely choose
>>>>> the
>>>>>>>>>>  view.  If
>>>>>>>>>>  > it's the view, how do you determine when that component has
>>>>>>>>>  multiple
>>>>>>>>>>  webapp
>>>>>>>>>>  > as in product, etc/.
>>>>>>>>>>
>>>>>>>>>> I would choose neither the request map nor the view map. I suggest
>>>>>>>>>>  tying "mainDecoratorLocation" to controller.xml itself.
>>>>>>>>>>
>>>>>>>>>> If "mainDecoratorLocation" were view-specific, we would tie it to
>>> a
>>>>>>>>>>  view map.
>>>>>>>>>>
>>>>>>>>>> As the screen widgets are written now, they are webapp-specific.
>>>>>>>>>>
>>>>>>>>>> Jonathon
>>>>>>>>>>
>>>>>>>>>> Chris Howe wrote:
>>>>>>>>>>> Hi Jonathon,
>>>>>>>>>>>
>>>>>>>>>>> Making the variable name webapp specific breaks the entire point
>>> of
>>>>>>>>>>  the
>>>>>>>>>>> variable.  I'm under the impression that most deployments of
>>> OFBiz
>>>>>>>>>>  use very
>>>>>>>>>>> few of the applications as is, OOTB.  Taking away the ability to
>>>>>>>>>>  change
>>>>>>>>>>> the decoration of the application puts that much more burden on
>>>>>>>>>>  custom
>>>>>>>>>>> applications to maintain a code base that is already maintained
>>> by
>>>>>>>>>>  the
>>>>>>>>>>> community when all they want to do is extend and tweak subtle
>>>>> areas.
>>>>>>>>>>> The solution of further processing of the web.xml context-params
>>> in
>>>>>>>>>>  order to fill the
>>>>>>>>>>> context starts to pull us away from the design of traditional web
>>>>>>>>>>> applications.  This has the effect of steepening the learning
>>>>> curve.
>>>>>>>>>>    In addition, there is too much ambiguity in deciding which
>>>>>>>>>>  mainDecoratorLocation would be chosen that I think it really
>>> would
>>>>>>>>>  be best to
>>>>>>>>>>  determine it through a custom preprocessor so that one would end
>>> up
>>>>>>>>>  with
>>>>>>>>>>  the desired results.  For example, do you determine the variable
>>>>>>>>>  from
>>>>>>>>>>  the included controller of the request-map or from the view-map.
>>>>>>>>>   You
>>>>>>>>>>  would likely choose the view.  If it's the view, how do you
>>>>>>>>>  determine
>>>>>>>>>>  when that component has multiple webapp as in product, etc/.
>>>>>>>>>>> ----- Original Message ----
>>>>>>>>>>> From: Jonathon -- Improov <[EMAIL PROTECTED]>
>>>>>>>>>>> To: [email protected]
>>>>>>>>>>> Sent: Wednesday, November 21, 2007 10:56:14 PM
>>>>>>>>>>> Subject: Re: mainDecoratorLocation change to
>>>>>>>>>>  [applicationname]mainDecoratorLocation
>>>>>>>>>>> I think BJ's method is fine. It's the only way to couple the
>>>>>>>>>>>  webapp-specific parameter "mainDecorationLocation" to a
>>> particular
>>>>>>>>>>> webapp, and to decouple it
>>>>>>>>>>>  from the single global servlet context (single to a webapp).
>>>>>>>>>>>
>>>>>>>>>>> Say a parent webapp includes the controller.xml of a child
>>> webapp,
>>>>>>>>>  we
>>>>>>>>>>>  use "parent" and "child" so it's easy for me to write here.
>>>>>>>>>>>
>>>>>>>>>>> When we <include> the child's controller.xml from the parent
>>>>> webapp,
>>>>>>>>>>>  the servlet context is still the parent's, not a mix of 2
>>> webapps.
>>>>>>>>>>> There will be only one
>>>>>>>>>>>  "mainDecoratorLocation" parameter for all the widgets listed in
>>>>>>>>>>> both controller.xml(s).
>>>>>>>>>>>
>>>>>>>>>>> When we need to process the views (or widgets) specified in the
>>>>>>>>>>  child's
>>>>>>>>>>>  controller.xml, we need to do something extra. Those views
>>> require
>>>>>>>>>>> a specific
>>>>>>>>>>>  "mainDecoratorLocation" value in order to work, say
>>>>>>>>>>> "component://child/widget/MainDecorScreens.xml". The parent will
>>>>>>>>>>>  need to play by those rules, and create "mainDecoratorLocation"
>>>>>>>>>>> with that expected value for the
>>>>>>>>>>>  child's views to work. Specifically, I mean "for the child's
>>> views
>>>>>>>>>>> to work in the parent's
>>>>>>>>>>>  servlet context".
>>>>>>>>>>>
>>>>>>>>>>> The problem comes when the parent also has its own
>>>>>>>>>>>  "mainDecoratorLocation", say
>>>>>>>>>>> "component://parent/widget/MainDecorScreens.xml". Then there is a
>>>>>>>>>>>  clash. Because the 2 webapps' widgets operate in a single
>>> servlet
>>>>>>>>>>> context, there can only be one
>>>>>>>>>>>  parameter "mainDecoratorLocation" for both webapps.
>>>>>>>>>>>
>>>>>>>>>>> BJ's method is the only quick fix there is. Decouple
>>>>>>>>>>>  "mainDecoratorLocation" from the global servlet context, and
>>>>>>>>>>> encapsulate that attribute together with the
>>>>>>>>>>>  widgets that require that particular attribute with a particular
>>>>>>>>>>> value.
>>>>>>>>>>>
>>>>>>>>>>> That means changing all widgets to point to say
>>>>>>>>>>>  "<webapp-name>:mainDecoratorLocation". Another solution could be
>>>>>>>>>>> to add a new attribute to <decorator-screen>, like
>>>>>>>>>>>  "param-location" which automatically hunts for a parameter named
>>>>>>>>>>>  "<webapp-name>:mainDecoratorLocation". So a value of
>>>>>>>>>>> "myDecoratorLocation" might prompt the widget engine to look for
>>> a
>>>>>>>>>>>  parameter named "<webapp-name>:myDecoratorLocation".
>>>>>>>>>>>
>>>>>>>>>>> That is a simple fix.
>>>>>>>>>>>
>>>>>>>>>>> For a better fix, we need to truly decouple
>>> "mainDecoratorLocation"
>>>>>>>>>>>  from the global servlet context (web.xml), and put it into the
>>>>>>>>>>> controller.xml. The widget
>>>>>>>>>>>  engine could look in the controller.xml for a variable
>>>>>>>>>>> "mainDecoratorLocation" every time it
>>>>>>>>>>>  processes a screen widget. That would ensure perfect
>>> re-usability
>>>>>>>>>>> of any included widgets
>>>>>>>>>>>  (included with a controller <include>), without the need to
>>> meddle
>>>>>>>>>>> with passing in the expected
>>>>>>>>>>>  "mainDecoratorLocation" for those included widgets.
>>>>>>>>>>>
>>>>>>>>>>> Some changes to ConfigXMLReader, RequestManager and
>>> ControlServlet
>>>>>>>>>>  may
>>>>>>>>>>>  be required.
>>>>>>>>>>>
>>>>>>>>>>> Hope that makes sense.
>>>>>>>>>>>
>>>>>>>>>>> I love how OFBiz already has many powerful "clean extension"
>>>>>>>>>>>  mechanisms, much like object-oriented programming and
>>>>>>>>>>> sub-classing. This "mainDecoratorLocation" thing may
>>>>>>>>>>  be
>>>>>>>>>>>  a good area to work on.
>>>>>>>>>>>
>>>>>>>>>>> Jonathon
>>>>>>>>>>>
>>>>>>>>>>> BJ Freeman wrote:
>>>>>>>>>>>> so far you and I are on the same page.
>>>>>>>>>>>> I thinks the confusion is, I am not defining a
>>>>>>>>>  mainDecoratorLocation
>>>>>>>>>>>> for my application. So this is not about how to use
>>>>>>>>>>>  ainDecoratorLocation
>>>>>>>>>>>> in my web.xml for my widgets.
>>>>>>>>>>>> the web.xml has been used to provide context for widget's
>>>>>>>>>>>> mainDecoratorLocation, which as you point out is a component.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> here are the steps:
>>>>>>>>>>>> include another controller in your apps controller.
>>>>>>>>>>>> Now the mainDecoratorLocation is defined in the web.xml of the
>>>>>>>>>>>  included
>>>>>>>>>>>> controller, but not mine.
>>>>>>>>>>>> so if I don't delcare a mainDecoratorLocation in my web.xml I
>>> get
>>>>>>>>>  an
>>>>>>>>>>>> error, about the mainDecoratorLocation not being found, when I
>>>>>>>>>>  access
>>>>>>>>>>>> the included controls widget.
>>>>>>>>>>>> If I define a mainDecoratorLocation in my web.xml that has the
>>>>> path
>>>>>>>>>>>  for
>>>>>>>>>>>> one of the application that is included in my controller, it
>>> works
>>>>>>>>>>>  fine.
>>>>>>>>>>>> But just for that application.
>>>>>>>>>>>> This lets me only define one mainDecoratorLocation for all
>>>>> included
>>>>>>>>>>>> controllers.
>>>>>>>>>>>> so I can not define a mainDecoratorLocation in my web.xml for
>>> each
>>>>>>>>>>>> application with the path defined in the application web.xml.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Chris Howe sent the following on 11/21/2007 6:39 PM:
>>>>>>>>>>>>> No, the feature of mainDecoratorLocation is the webapp being
>>>>>>>>>  called
>>>>>>>>>>>  defines the default value of mainDecoratorLocation.  You should
>>> be
>>>>>>>>>>  able
>>>>>>>>>>>  to run a pre-processor to override the value that is found in
>>> the
>>>>>>>>>>>  called webapp's web.xml file.
>>>>>>>>>>>>> It may help to identify here the difference in terminology that
>>>>> is
>>>>>>>>>>>  used.  There's a component and a web application.  The web
>>>>>>>>>>  application
>>>>>>>>>>>  is what is generally under the webapp folder and does not
>>> include
>>>>>>>>>>  the
>>>>>>>>>>>  widgets.  The widgets (form, screen, tree, menu) belong to the
>>>>>>>>>>  component,
>>>>>>>>>>>  not the webapp.
>>>>>>>>>>>>> The controller controls the web application along with the
>>>>> context
>>>>>>>>>>>  provided by the web.xml definitions.  So, if I have webapp:
>>> myApp,
>>>>>>>>>>  the
>>>>>>>>>>>  context should be provided by the web.xml file in the web
>>>>>>>>>>  application
>>>>>>>>>>>  myApp, at least by default.  Simply because you are including
>>>>>>>>>>  elements
>>>>>>>>>>>  from another document does not mean you should change what
>>>>> provides
>>>>>>>>>>  the
>>>>>>>>>>>  default context.
>>>>>>>>>>>>> webapp/myApp
>>>>>>>>>>>>>                         /WEB-INF
>>>>>>>>>>>>>                                       /controller.xml
>>> <--Controls
>>>>>>>>>>>  web application myApp
>>>>>>>>>>>>>                                       /web.xml
>>>>>>>>>   <--provides
>>>>>>>>>>>  context for web application myApp
>>>>>>>>>>>>> ----- Original Message ----
>>>>>>>>>>>>> From: BJ Freeman <[EMAIL PROTECTED]>
>>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>>> Sent: Wednesday, November 21, 2007 7:59:52 PM
>>>>>>>>>>>>> Subject: Re: mainDecoratorLocation change to
>>>>>>>>>>>  [applicationname]mainDecoratorLocation
>>>>>>>>>>>>> If i understand you correctly the path to mainDecoratorLocation
>>>>>>>>>>>  should
>>>>>>>>>>>>> be the same for all apps.
>>>>>>>>>>>>> however if the path is in the application should it not be
>>>>>>>>>>>  distinguish
>>>>>>>>>>>>> for that application?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Chris Howe sent the following on 11/21/2007 5:50 PM:
>>>>>>>>>>>>>> The "problem" that you're having is the exact feature that is
>>>>>>>>>>>  created
>>>>>>>>>>>>>  by mainDecoratorLocation.  Appending [applicationname] breaks
>>>>>>>>>  that
>>>>>>>>>>>>>  feature.   Are you unable to override
>>>>>>>>>>>  parameters.mainDecoratorLocation
>>>>>>>>>>>>>  through a preprocessor or by another means?
>>>>>>>>>>>>>> ----- Original Message ----
>>>>>>>>>>>>>> From: BJ Freeman <[EMAIL PROTECTED]>
>>>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>>>> Sent: Wednesday, November 21, 2007 7:02:18 PM
>>>>>>>>>>>>>> Subject: mainDecoratorLocation change to
>>>>>>>>>>>>>  [applicationname]mainDecoratorLocation
>>>>>>>>>>>>>> when including other controllers, the context for
>>>>>>>>>>>>>  mainDecoratorLocation
>>>>>>>>>>>>>> has to be defined in the web.xml of the home controller
>>>>> location.
>>>>>>>>>>>>>> this causes a problem when all the application use
>>>>>>>>>>>>>>  mainDecoratorLocation.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> so would like to propose that the mainDecoratorLocation is
>>> used
>>>>>>>>>>  for
>>>>>>>>>>>>>  the
>>>>>>>>>>>>>> framework/common/webapp/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> and preappend the application name to mainDecoratorLocation
>>>>>>>>>>>>>> ([applicationname]mainDecoratorLocation)  in the applications
>>>>>>>>>>>>>  web.xml.
>>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> No virus found in this incoming message.
>>>> Checked by AVG Free Edition.
>>>> Version: 7.5.503 / Virus Database: 269.16.4/1146 - Release Date:
>>> 11/22/2007 6:55 PM
>>>
>>>
> 
> 
> 

Reply via email to