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
>

Reply via email to