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 >