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.
