myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shane Petroff <sh...@mayet.ca>
Subject Re: [Trinidad] Difference between these 2
Date Tue, 11 Mar 2008 18:25:22 GMT
Abhijit Ghosh wrote:
> Please try setAction(<MethodBinding>)

Thanks, talk about obvious...

OK, then the real reason for this is to figure out the PPR side. The 
normal declarative version works fine, but the programmatic one does 
not. To get to this state, I used the maven create archetype posted here 
a while back 
(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'm trying to decipher 
the posts associated with the PPR activity, but I'm not sure how to 
interpret them. Any help appreciated, 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>

-- 
Shane


Mime
View raw message