I get the point, thanks Adam. Probably it would be fine to have
<af:frame> do it automatically, at least with an option.
Cosma
2006/6/15, Adam Winer <[EMAIL PROTECTED]>:
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
>