Cosma,
What you'll need to do is change:
source="/faces/people/edit/top.jspx"
to
source="#{...anELExpression..>}"
... where the EL expression uses ViewHandler.getActionURL().
If you're using Facelets, I'd register a custom EL function that
takes a viewID and calls ViewHandler.getActionURL(), so this'd
look like:
source="#{my:getViewUrl('/people/edit/top.jspx')}"
(If you're not using Facelets, you can create a custom Map
implementation that has the same effect.)
-- Adam
On 6/15/06, Cosma Colanicchia <[EMAIL PROTECTED]> wrote:
Hello,
I have a problem using PageFlowScope when the dialog contains a
frameset. I explain what I'm doing:
I have an <af:table> that launch a dialog in a child window when the
user click on a row.
<af:commandLink text="Edit" useWindow="true"
action="#{peopleActions.editPerson}">
<af:setActionListener from="#{person.personId}"
to="#{pageFlowScope.personId}"/>
</af:commandLink>
In the action method, I put an object in the PageFlowScope and return
a dialog:* outcome.
public String editPerson() {
Integer personId = (Integer) getPageFlowAttribute("personId");
PersonDTO person = PeopleFacadeUtil.getFacade().getPersonDetails(personId);
setPageFlowAttribute("person", person);
return "dialog:editPerson";
}
My navigation rule point to a frameset page:
<navigation-rule>
<navigation-case>
<from-action>#{peopleActions.editPerson}</from-action>
<from-outcome>dialog:editPerson</from-outcome>
<to-view-id>/people/edit/frameset.jspx</to-view-id>
</navigation-case>
</navigation-rule>
And my frameset is defined like this:
<afh:frameBorderLayout>
<f:facet name="top">
<afh:frame
source="/faces/people/edit/top.jspx" name="editPersonTop"
height="350px" />
</f:facet>
<f:facet name="bottom">
<afh:frame
source="/faces/people/edit/edit.jspx"
name="editPersonContent" height="*" />
</f:facet>
</afh:frameBorderLayout>
The problem is that inside the top.jspx and edit.jspx, the
PageFlowScope "person" attribute is lost. If I skip the frameset and
navigate directly to one of the two, the object is there.
My guess is that the <af:frame> component doesn't pass throught the
_afPfm parameter when loading the view defined in "source", so the
correct pageFlowScope can't be determined.
Can this be considered a bug?
Thanks
Cosma