[ 
https://issues.apache.org/jira/browse/TRINIDAD-1006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12578794#action_12578794
 ] 

Shane Petroff commented on TRINIDAD-1006:
-----------------------------------------

Based on one of Matthais' comments on the users list, I've changed a bit of the 
code. It works better now in the sense that both fields get updated when one 
uses the declarative version, but the programmatic one is still broken. Is 
there something else which needs to be set up?

    public void returnedFromPage2( ReturnEvent event)
    {
        if (event.getReturnValue() != null)
        {
            Object[] array = (Object[]) event.getReturnValue();
            System.out.println( "returned value " + array[0] );
            setSessionText(array[0].toString());
            UIComponent comp = event.getComponent().findComponent("txtID");
            RequestContext afContext = RequestContext.getCurrentInstance();
            afContext.addPartialTarget(comp);
        }
    }


> PPR does not work for components setup programatically
> ------------------------------------------------------
>
>                 Key: TRINIDAD-1006
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1006
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 1.0.6-core
>         Environment: Win2K, Tomahawk 6.0.14, Firefox 2.0.0.12
>            Reporter: Shane Petroff
>            Priority: Blocker
>         Attachments: testApp.war
>
>
> I've set up two sets of components which are supposed to be functionally 
> identical, but they do no behave in the same way. Each pair is composed of a 
> tr:inputText and a tr:commandButton. The first 'version' is composed into a 
> standard page, and the second is created programmatically. 
> The normal declarative version works fine, but the programmatic one does not. 
> To get to this state, I used the maven create archetype 
> (http://wiki.apache.org/myfaces/MyFaces_Archetypes_for_Maven) to generate a 
> hello world app. I dropped back the version numbers for JSF 1.1 (tr v 1.0.6), 
> then deployed to Tomcat 6.0.14. The return events are 'heard', but the PPR 
> refresh never succeeds. The files below contain the respective changes to the 
> hello world app. There are no errors either on the server or js, but the 
> refresh never happens. I can't decipher the posts associated with the PPR 
> activity. Any help appreciated, my only fall-back now is to drop Trinidad, 
> thanks.
> Shane
> ****************HelloWorldBacking.java******************
> package org.apache.myfaces.trinidad.blank;
> import org.apache.myfaces.trinidad.context.RequestContext;
> import org.apache.myfaces.trinidad.event.ReturnEvent;
> import org.apache.myfaces.trinidad.component.core.input.CoreInputText;
> import org.apache.myfaces.trinidad.component.core.nav.CoreCommandButton;
> import javax.faces.component.html.HtmlSelectManyListbox;
> import javax.faces.component.html.HtmlPanelGrid;
> import javax.faces.model.SelectItem;
> import javax.faces.context.FacesContext;
> import javax.faces.application.Application;
> import java.util.List;
> import java.util.ArrayList;
> public class HelloWorldBacking
> {
>    private HtmlSelectManyListbox m_CommentList;
>    public HelloWorldBacking()
>    {
>    }
>    public HtmlSelectManyListbox getCommentList()
>    {
>        return m_CommentList;
>    }
>    public void setCommentList(HtmlSelectManyListbox commentList )
>    {
>        m_CommentList = commentList;
>    }
>    public String cancelCommentLibrary()
>    {
>        RequestContext.getCurrentInstance().returnFromDialog(null, null);
>        return null;
>    }
>    public String insertFromCommentLibrary()
>    {
>        Object returnValue = m_CommentList.getSelectedValues();
>        RequestContext.getCurrentInstance().returnFromDialog(returnValue, 
> null);
>        return null;
>    }
>    public List getComments()
>    {
>        List comments = new ArrayList();
>        comments.add(new SelectItem("This is a comment"));
>        comments.add(new SelectItem("qwerty"));
>        comments.add(new SelectItem("The quick brown fox jumped over the lazy 
> sleeping dog"));
>        return comments;
>    }
>    ///////////////////////////////////////////////
>    public String getSessionText()
>    {
>        FacesContext context = FacesContext.getCurrentInstance();
>        return (String) 
> context.getExternalContext().getSessionMap().get("testText");
>    }
>    public void setSessionText(final String s)
>    {
>        FacesContext context = FacesContext.getCurrentInstance();
>        context.getExternalContext().getSessionMap().put("testText", s);
>    }
>    public String onOpenPage2()
>    {
>        return "dialog:openPage2";
>    }
>    public void returnedFromPage2( ReturnEvent event)
>    {
>        if (event.getReturnValue() != null)
>        {
>            Object[] array = (Object[]) event.getReturnValue();
>            System.out.println( "returned value " + array[0] );
>            setSessionText(array[0].toString());
>        }
>    }
>    ///////////////////////////////////////////////
>    private HtmlPanelGrid m_MainPanel;
>    public HtmlPanelGrid getMainPanel()
>    {
>        return m_MainPanel;
>    }
>    public void setMainPanel(HtmlPanelGrid panel)
>    {
>        this.m_MainPanel = panel;
>        m_MainPanel.setBorder(2);
>        addContent();
>    }
>    private void addContent()
>    {
>        Application app = FacesContext.getCurrentInstance().getApplication();
>        CoreInputText txt = (CoreInputText) app.createComponent( 
> CoreInputText.COMPONENT_TYPE );
>        txt.setLabel( "test dynamic" );
>        txt.setId( "txtID" );
>        txt.setValueBinding("value", 
> app.createValueBinding("#{helloWorldBacking.sessionText}"));
>        txt.setPartialTriggers( new String[] { "btnID" } );
>        m_MainPanel.getChildren().add(txt);
>        CoreCommandButton btn = (CoreCommandButton) app.createComponent( 
> CoreCommandButton.COMPONENT_TYPE );
>        btn.setText("this does not");
>        btn.setId( "btnID" );
>        
> btn.setAction(app.createMethodBinding("#{helloWorldBacking.onOpenPage2}", 
> null ));
>        btn.setImmediate(true);
>        btn.setPartialSubmit(true);
>        btn.setUseWindow(true);
>        btn.setWindowWidth(600);
>        btn.setWindowHeight(300);
>        
> btn.setReturnListener(app.createMethodBinding("#{helloWorldBacking.returnedFromPage2}",
>                                                      new Class[] { 
> ReturnEvent.class }));
>        m_MainPanel.getChildren().add(btn);
>   }
> }
> ****************index.jspx******************
> <?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; version="2.0"
>          xmlns:f="http://java.sun.com/jsf/core";
>          xmlns:h="http://java.sun.com/jsf/html";
>          xmlns:tr="http://myfaces.apache.org/trinidad"; >
>  <jsp:directive.page contentType="text/html;charset=utf-8"/>
>  <f:view>
>    <tr:document title="PPR Problem">
>       <tr:form>
>        <h:panelGrid id="contentPanel" binding="#{helloWorldBacking.mainPanel}"
>                     columns="2" border="1" cellspacing="0" styleClass="panel">
>            <tr:inputText label="test declarative"
>                          value="#{helloWorldBacking.sessionText}"
>                          partialTriggers="buttonId"/>
>            <tr:commandButton id="buttonId"
>                              text="this works"
>                              windowWidth="500" windowHeight="500"
>                              partialSubmit="true"
>                              useWindow="true"
>                              action="#{helloWorldBacking.onOpenPage2}"
>                              
> returnListener="#{helloWorldBacking.returnedFromPage2}"/>
>        </h:panelGrid>
>       </tr:form>
>    </tr:document>
>  </f:view>
> </jsp:root>
> ****************page2.jspx******************
> <?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; version="2.0"
>          xmlns:f="http://java.sun.com/jsf/core";
>          xmlns:tr="http://myfaces.apache.org/trinidad";
>          xmlns:h="http://java.sun.com/jsf/html";>
>  <jsp:directive.page contentType="text/html;charset=utf-8"/>
>  <f:view>
>    <tr:document title="PPR Problem">
>       <tr:form>
>        <tr:panelPage>
>          <h:outputText value="select something" styleClass="textField"/>
>          <h:selectManyListbox id="commentLibraryList"
>                               size="3"
>                               binding="#{helloWorldBacking.commentList}"
>                               styleClass="listBox">
>              <f:selectItems value="#{helloWorldBacking.comments}"/>
>          </h:selectManyListbox>
>          <h:commandButton 
> action="#{helloWorldBacking.insertFromCommentLibrary}"
>                           value="insert" styleClass="button"/>
>          <h:commandButton action="#{helloWorldBacking.cancelCommentLibrary}"
>                           value="cancel" immediate="true" 
> styleClass="button"/>
>        </tr:panelPage>
>       </tr:form>
>    </tr:document>
>  </f:view>
> </jsp:root>
> ****************faces-config.xml******************
> <?xml version="1.0"?>
> <!DOCTYPE faces-config PUBLIC
>    "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
>    "http://java.sun.com/dtd/web-facesconfig_1_1.dtd";>
> <faces-config>
>  <application>
>    <!-- Use the Trinidad RenderKit -->
>    <default-render-kit-id>
>      org.apache.myfaces.trinidad.core
>    </default-render-kit-id>
>  </application>
>  <!-- Global preferences object that proxies to others -->
>  <managed-bean>
>    <managed-bean-name>helloWorldBacking</managed-bean-name>
>    <managed-bean-class>
>       org.apache.myfaces.trinidad.blank.HelloWorldBacking
>    </managed-bean-class>
>    <managed-bean-scope>
>       request
>    </managed-bean-scope>
>  </managed-bean>
>    <navigation-rule>
>      <from-view-id>*</from-view-id>
>      <navigation-case>
>        <from-outcome>dialog:openPage2</from-outcome>
>        <to-view-id>/page2.jspx</to-view-id>
>      </navigation-case>
>    </navigation-rule>
> </faces-config>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to