myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shane Petroff (JIRA)" <...@myfaces.apache.org>
Subject [jira] Created: (TRINIDAD-1006) PPR does not work for components setup programatically
Date Wed, 12 Mar 2008 03:18:46 GMT
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


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.


Mime
View raw message