You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@beehive.apache.org by "Stanciu, Horatiu (TOR)" <hs...@Express-Scripts.com> on 2006/08/25 15:36:41 UTC

RPB repeaterBlock tag (WLP8.1) with WLP9.2 - "Expressions in a dataSource must bind to a single property."

Hi !

 

I need to use the repeaterBlock (the taglib included in rpb.jar that was
written for 8.1) in 9.2. (details of 8.1 usage are at 

http://dev2dev.bea.com/lpt/a/38 ).

 

When I'm running my below implementation I receive the following error
message:

 

 

The expression "pageContext.packs" is an invalid expression for a
dataSource. Expressions in a dataSource must bind to a single property.

 

 

although what I did is the same with the example I found. I had to
import in WEB-INF\lib rpb.jar and netui-scoping.jar (these are 8.1
libraries).

 

I'm wondering if this taglib that used xscript (
dataSource="{pageContext.packs}" ) under 8.1 is able to cope with the
new 

9.2 style (without curly braces).

 

I'm using the following code:

 

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

Index.jsp - the jsp where the results are displayed

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

 

 

<%@ page language="java" contentType="text/html;charset=UTF-8"%>

 

<%@ page import="com.bea.ps.repeater.RepeaterFilter"%>

<%@ page import="org.apache.beehive.netui.pageflow.PageFlowUtils"%>

<%@ page import="pageflow.thbm.packages.modify.ModifyController"%>

<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data"%>

<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>

<%@ taglib uri="netui-tags-template.tld" prefix="netui-template"%>

<%@ taglib uri="rpb" prefix="rpb"%>

<netui:html>

  <head>

    <title>

      Contacts

    </title>

  </head>

  <body>

    <%

    ModifyController controller =
(ModifyController)PageFlowUtils.getCurrentPageFlow(request,request.getSe
ssion().getServletContext());

    RepeaterFilter filter = controller.getRepeaterFilter();

    filter.setRowCount(10);

    %>

    <netui:form action="refresh">

      <rpb:repeaterBlock name="packages1" filter="<%=filter%>"

 
ascendingImage='<%=request.getContextPath()+"/images/down-arrow.gif"%>' 

 
descendingImage='<%=request.getContextPath()+"/images/up-arrow.gif"%>'>

      

      <netui-data:repeater dataSource="pageContext.packs">

            <netui-data:repeaterHeader>

              <table class="tablebody" border="1">

                <tr>

                  <th><rpb:columnHeader
field="pkgDescriptionEn">Description En</rpb:columnHeader></th>

                  <th><rpb:columnHeader
field="pkgDescriptionFr">Description Fr</rpb:columnHeader></th>

                  <th><rpb:columnHeader field="pkgNameEn">Home
Phone</rpb:columnHeader></th>

                  <th><rpb:columnHeader field="pkgNameFr">Work
Phone</rpb:columnHeader></th>

                  <th><rpb:columnHeader field="pkgStatus">Mobile
Phone</rpb:columnHeader></th>

                </tr>

              </netui-data:repeaterHeader>

              <netui-data:repeaterItem>

                <tr>

                  <td><netui:label
value="container.item.pkgDescriptionEn"/></td>

                  <td><netui:label
value="container.item.pkgDescriptionFr"/></td>

                  <td><netui:label
value="container.item.pkgNameEn"/></td>

                  <td><netui:label
value="container.item.pkgNameFr"/></td>

                  <td><netui:label
value="container.item.pkgStatus"/></td>

                </tr>

              </netui-data:repeaterItem>

 
<netui-data:repeaterFooter></table></netui-data:repeaterFooter>

            </netui-data:repeater>

            <br>

            <rpb:firstPage label="First"/>

            <rpb:previousPage label="Previous"/>

            <rpb:nextPage label="Next"/>

            <rpb:lastPage label="Last"/>

            <rpb:pageNumber/>

      </rpb:repeaterBlock>

    </netui:form>

  </body>

</netui:html>

 

 

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

ModifyController.jpf is like this:

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

 

 

package pageflow.thbm.packages.modify;

 

 

import javax.servlet.http.HttpSession;

import org.apache.beehive.netui.pageflow.PageFlowController;

import org.apache.beehive.netui.pageflow.annotations.Jpf;

 

import com.bea.ps.repeater.RepeaterFilter;

import pageflow.thbm.packages.ajax.*;

import org.apache.beehive.netui.pageflow.Forward;

 

@Jpf.Controller(simpleActions = { @Jpf.SimpleAction(name = "begin", path
= "index.jsp") })

public class ModifyController extends PageFlowController {

            

            private RepeaterFilter filter;

            

            private static final long serialVersionUID = -1876986115L;

 

            private Packages packs = new Packages();

            @Jpf.Action(forwards = { @Jpf.Forward(name = "success", path
= "index.jsp") })

            public Forward refresh() {

                        Forward forward = new Forward("success");

                        return forward;

            }

 

            /**

             * Callback that is invoked when this controller instance is
created.

             */

            @Override

            protected void onCreate() {

                        

                        

                        filter = new RepeaterFilter();

        filter.setSortField("pkgCode");

        filter.setPageSize(5);

        

            }

            

    /**

     * Return the current filter

     */

    public RepeaterFilter getRepeaterFilter()

    {

        return filter;

    }

    

    public PackageVO[] getPackages()

    {

        return packs.getPackages(filter);

    }

 

 

            /**

             * Callback that is invoked when this controller instance is
destroyed.

             */

            @Override

            protected void onDestroy(HttpSession session) {

            }

}

 

 

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

and Packages.java now:

 

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

 

 

 

package pageflow.thbm.packages.ajax;

 

import com.bea.ps.repeater.RepeaterFilter;

import java.util.Iterator;

import java.util.ArrayList;

import com.bea.ps.repeater.RepeaterHelper;

 

public class Packages implements java.io.Serializable {

            

            public Packages(){}

            

            public PackageVO[] getPackages(RepeaterFilter filter){

                        

 

// I don't have yet link to the database, so I mimicked this:

 

                        ArrayList<PackageVO> packages = new
ArrayList<PackageVO>(); 

                        PackageVO pkg = new PackageVO();

                        

                        pkg.setPkgCode("123");

                        pkg.setPkgDescriptionEn("Good Pkg");

                        pkg.setPkgDescriptionFr("[Bonne paquet]");

                        pkg.setPkgNameEn("Pkg1");

                        pkg.setPkgNameFr("[Pkg1]");

                        pkg.setPkgStatus("Inactive");

                        

                        PackageVO pkg1 = new PackageVO();

                        

                        pkg1.setPkgCode("123");

                        pkg1.setPkgDescriptionEn("Good Pkg");

                        pkg1.setPkgDescriptionFr("[Bonne paquet]");

                        pkg1.setPkgNameEn("Pkg1");

                        pkg1.setPkgNameFr("[Pkg1]");

                        pkg1.setPkgStatus("Inactive");

                        

                        PackageVO pkg2 = new PackageVO();

                        

                        pkg2.setPkgCode("123");

                        pkg2.setPkgDescriptionEn("Good Pkg");

                        pkg2.setPkgDescriptionFr("[Bonne paquet]");

                        pkg2.setPkgNameEn("Pkg1");

                        pkg2.setPkgNameFr("[Pkg1]");

                        pkg2.setPkgStatus("Inactive");

                        

PackageVO pkg3 = new PackageVO();

                        

                        pkg3.setPkgCode("123");

                        pkg3.setPkgDescriptionEn("Good Pkg");

                        pkg3.setPkgDescriptionFr("[Bonne paquet]");

                        pkg3.setPkgNameEn("Pkg1");

                        pkg3.setPkgNameFr("[Pkg1]");

                        pkg3.setPkgStatus("Inactive");

                        

PackageVO pkg4 = new PackageVO();

                        

                        pkg4.setPkgCode("123");

                        pkg4.setPkgDescriptionEn("Good Pkg");

                        pkg4.setPkgDescriptionFr("[Bonne paquet]");

                        pkg4.setPkgNameEn("pkg4");

                        pkg4.setPkgNameFr("[pkg4]");

                        pkg4.setPkgStatus("Inactive");

                        

PackageVO pkg5 = new PackageVO();

                        

                        pkg5.setPkgCode("123");

                        pkg5.setPkgDescriptionEn("Good Pkg");

                        pkg5.setPkgDescriptionFr("[Bonne paquet]");

                        pkg5.setPkgNameEn("pkg5");

                        pkg5.setPkgNameFr("[pkg5]");

                        pkg5.setPkgStatus("Inactive");

                        

PackageVO pkg6 = new PackageVO();

                        

                        pkg6.setPkgCode("123");

                        pkg6.setPkgDescriptionEn("Good Pkg");

                        pkg6.setPkgDescriptionFr("[Bonne paquet]");

                        pkg6.setPkgNameEn("pkg6");

                        pkg6.setPkgNameFr("[pkg6]");

                        pkg6.setPkgStatus("Inactive");

                        

PackageVO pkg7 = new PackageVO();

                        

                        pkg7.setPkgCode("123");

                        pkg7.setPkgDescriptionEn("Good Pkg");

                        pkg7.setPkgDescriptionFr("[Bonne paquet]");

                        pkg7.setPkgNameEn("pkg7");

                        pkg7.setPkgNameFr("[pkg7]");

                        pkg7.setPkgStatus("Inactive");

                        

PackageVO pkg8 = new PackageVO();

                        

                        pkg8.setPkgCode("123");

                        pkg8.setPkgDescriptionEn("Good Pkg");

                        pkg8.setPkgDescriptionFr("[Bonne paquet]");

                        pkg8.setPkgNameEn("pkg8");

                        pkg8.setPkgNameFr("[pkg8]");

                        pkg8.setPkgStatus("Inactive");

                        

PackageVO pkg9 = new PackageVO();

                        

                        pkg9.setPkgCode("123");

                        pkg9.setPkgDescriptionEn("Good Pkg");

                        pkg9.setPkgDescriptionFr("[Bonne paquet]");

                        pkg9.setPkgNameEn("pkg9");

                        pkg9.setPkgNameFr("[pkg9]");

                        pkg9.setPkgStatus("Inactive");

                        

                        

                        packages.add(pkg);

                        packages.add(pkg1);

                        packages.add(pkg2);

                        packages.add(pkg3);

                        packages.add(pkg4);

                        packages.add(pkg5);

                        packages.add(pkg6);

                        packages.add(pkg7);

                        packages.add(pkg8);

                        packages.add(pkg9);

                        

                        

                        

                        

//Remove this line if you do not need the last page action feature and

        //want to avoid the extra hit to the database to count rows

        filter.setRowCount(packages.size());

        

        //Get data from database control

        //Iterator it =
contactDB.getContacts(filter.getSortField(),filter.getSortDirection().ge
tName());

        Iterator it = packages.iterator();

        //Process data from Iterator returned by database control and
return it

        return
(PackageVO[])RepeaterHelper.processIterator(it,PackageVO.class,filter);

 

            }

 

}
******* Confidentiality Notice *******
ESI Canada -- Optimizing the value of drug and dental benefits

This email, its electronic document attachments, and the contents of its website linkages may contain confidential health information.  This information is intended solely for use by the individual or entity to whom it is addressed.  If you have received this information in error, please notify the sender immediately and arrange for the prompt destruction of the material and any accompanying attachments.

******* Avis de confidentialite *******
ESI Canada -- Optimiser la valeur des regimes d'assurance medicaments et dentaires

Ce courriel ainsi que tout document y etant joint de meme que le contenu des liens vers des sites Web peuvent reunir des renseignements  confidentiels sur la sante.  Cette information s'adresse uniquement a l'usager ou a l'organisation auxquels elle est destinee.  Si vous avez recu ce message par erreur, veuillez en aviser l'expediteur immediatement et proceder a la suppression du document et des fichiers joints sans tarder.