I think the confusion is about what paths are inherited. Forwards (and
SimpleActions) are the only things that specify paths. If you override
an inherited action, you wouldn't be inheriting its forwards at all, so
you'd only have the ones you defined on the inherited action. Here's an
example:
/base/BaseController.jpf:
---
@Jpf.Controller(
simpleActions={
@Jpf.SimpleAction(name="simple1", path="base_simple1.jsp"),
@Jpf.SimpleAction(name="simple2", path="base_simple2.jsp")
}
)
public class BaseController
{
@Jpf.Action(
forwards={
@Jpf.Forward(name="complex1", path="base_complex1.jsp")
}
)
public Forward complex1()
{
...
}
@Jpf.Action(
forwards={
@Jpf.Forward(name="complex2", path="base_complex2.jsp")
}
)
public Forward complex2()
{
...
}
}
/derived/DerivedController.jpf:
---
@Jpf.Controller(
simpleActions={
@Jpf.SimpleAction(name="simple2", path="derived_simple2.jsp")
},
inheritLocalPaths=true
)
public class BaseController
{
@Jpf.Action(
forwards={
@Jpf.Forward(name="complex2", path="derived_complex2.jsp")
}
)
public Forward complex2()
{
...
}
}
Here's a table of actions/destinations (all actions being raised in the
context of /derived):
simple1 /base/base_simple1.jsp
complex1 /base/base_complex1.jsp
simple2 /derived/derived_simple2.jsp
complex2 /derived/derived_complex2.jsp
Does this answer your question?
Rich
John Rohrlich wrote:
By at that level I mean in the directory of the page flow with the
overriding action.
also see inline comment
- john
-----Original Message-----
From: Rich Feit [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 23, 2005 2:59 PM
To: Beehive Developers
Subject: Re: inheriting pages in page flows
I'm not sure what you mean by "at that level" -- are you asking whether
overriding an action implies that you have to create a JSP that's
associated with the derived page flow? If so, the answer is no --
that's the whole point behind the idea of inheriting JSPs. But I'm
probably misunderstanding what you're asking. :)
[JR] If the answer is no then I'm not sure how this is different from
what I originally suggested. If you don't need to add a JSP if you
override then how do you know if the local path is present? You are
suggesting that the annotation be at the class level which leaves open
the possibility that some JSPs will be local and some will be in the
directory of the base class page flow.
Suppose you have two actions that you override. In case one you forward
to foo.jsp which is found local to the base page flow. In case two you
forward to bar.jsp and you add a bar.jsp in the directory of the
extending page flow
baseFlow/
foo.jsp
bar.jsp
extendingFlow/
bar.jsp
From what you've said so far I'm not certain what happens. I belive that
if I set inheritLocalPaths=false then the action forwarding to foo.jsp
will fail from the extending page flow. If I set inheritLocalPaths=true
then I would expect foo.jsp to be found. But what about the action
forwarding to bar.jsp? I assume that I get the one in the extending flow
directory in both cases (true or false).
If you don't follow this maybe you could set up your own example to
better explain your design.
thanks - john
John Rohrlich wrote:
So are you saying that overriding an action means also adding a jsp at
that level?
- john
-----Original Message-----
From: Rich Feit [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 23, 2005 2:44 PM
To: Beehive Developers
Subject: Re: inheriting pages in page flows
Hi John,
I agree that this would be ideal, but I don't think it's possible
(should have made it clear in the original email). There's no way at
build time to know for certain whether a local path is "present", and
there's also no way at runtime to know if it's "present" beyond trying
to hit it and looking for a 404 result. This is true for JSPs as well
as for other arbitrary Servlet paths.
Rich
John Rohrlich wrote:
A good start Rich, but I'd like to see some additional behavior.
Allow action overrides to use pages local to the overridden actions
page
flow directory if the page is not found local to the overriding class.
This should work for n levels of inheritance. If class B extends class
C, and class A extends class B, and both extending classes override
the
same action then you would first look for a jsp in A's directory. If
you
didn't find the jsp you would look in B's directory and then finally
C's
directory.
- john
-----Original Message-----
From: Rich Feit [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 23, 2005 11:13 AM
To: Beehive Developers
Subject: inheriting pages in page flows
Hi all,
I'd like some design feedback here.
http://issues.apache.org/jira/browse/BEEHIVE-400 deals with a
much-asked
question: if you have a page flow that inherits from another page
flow,
how can you also inherit pages from the base page flow? Currently,
there's no good way to do it, which is an obvious hole. My thought is
to do something really simple (from the user's point of view :) ),
like
have a class-level annotation attribute:
inheritLocalPaths=true
This would cause local paths in *inherited* actions to be used in the
context of the current page flow. I think this might be sufficient,
and
even if it turns out it's not, it seems like a good start. Any
thoughts/comments on this?
Thanks,
Rich