cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jianyu Wang <Jia...@Imkenberg.de>
Subject AW: Help about how to use Repeater--bean binding
Date Tue, 23 Sep 2003 15:26:23 GMT
hello, Hugo, Marc

I have tried the repeater with new resource from cvs, also I mean using
string and long, but I get always the same exception.
And I want to know  whether the problem is from repeater handler or?

Thanks 

Jianyu 

> -----Urspr√ľngliche Nachricht-----
> Von:	Marc Portier [SMTP:mpo@outerthought.org]
> Gesendet am:	Donnerstag, 18. September 2003 22:07
> An:	dev@cocoon.apache.org
> Betreff:	Re: Help about how to use Repeater--bean binding
> 
> 
> 
> Hugo Burm wrote:
> 
> > Hello Jianyu,
> > 
> > Your unique-row-id (oid) must be a String. It is somewhere in the Woody
> > documentation and there is a comment in the sources that some conversion
> > routines should be added. The Long appears in your <wd:repeater> in the
> form
> > definition, and in your AddressBean Java class.
> > 
> > Hugo
> > 
> 
> Hugo,
> 
> I've created a fix for the mentioned TODO's and am updating the samples 
> to include the long datatype to show off this new support for convertors 
> on the row_ID field of the repeaters.
> 
> Maybe odd at first sight but the consequence of this is that if you have 
> a backend that is strongly typed (i.e. it produces Java Objects and 
> beans rather then the typical Strings of the XML backend) then one will 
> NOT NEED TO DEFINE the convertor.
> 
> will check in right away,
> Jianyu, could you verify that this is solving your problems?
> 
> 
> regards,
> -marc=
> 
> > 
> >>-----Original Message-----
> >>From: Jianyu Wang [mailto:Jianyu@Imkenberg.de]
> >>Sent: Thursday, September 18, 2003 5:50 PM
> >>To: dev@cocoon.apache.org
> >>Subject: Help about how to use Repeater--bean binding
> >>
> >>
> >>hi,
> >>I have a problem when I use repeater  to add a new row in the
> >>form and later
> >>save it into bean. I get the Exception like these:
> >>
> >>org.apache.commons.jxpath.JXPathException: Exception trying to
> >>create xpath
> >>addresses[1]; org.apache.cocoon.woody.binding.InsertBeanJXP
> >>athBinding.access$000(Lorg/apache/cocoon/woody/binding/InsertBeanJ
> >>XPathBindi
> >>ng;)Ljava/lang/String;
> >>        at
> >>org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.createPath
> >>(JXPathCon
> >>textReferenceImpl.java:420)
> >>        at
> >>org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.createPath
> >>(JXPathCon
> >>textReferenceImpl.java:397)
> >>        at
> >>org.apache.cocoon.woody.binding.RepeaterJXPathBinding.saveFormToMo
> >>del(Repeat
> >>erJXPathBinding.java:233)
> >>        at
> >>org.apache.cocoon.woody.binding.ComposedJXPathBindingBase.saveForm
> >>ToModel(Co
> >>mposedJXPathBindingBase.java:108)
> >>        at
> >>org.apache.cocoon.woody.binding.ContextJXPathBinding.saveFormToMod
> >>el(Context
> >>JXPathBinding.java:107)
> >>        at
> >>org.apache.cocoon.woody.binding.JXPathBindingBase.saveFormToModel(
> >>JXPathBind
> >>ingBase.java:115)
> >>
> >>
> >>my form defination is :
> >>
> >>  <wd:repeater id="addresses">
> >>      <wd:output id="oid">
> >>        <wd:datatype base="long"/>
> >>      </wd:output>
> >>
> >>	  <wd:field id="street" required="true">
> >>	   <wd:label><i18n:text>Street</i18n:text></wd:label>
> >>	   <wd:datatype base="string">
> >>	      <wd:validation>
> >>	        <wd:length min="2"/>
> >>	      </wd:validation>
> >>	    </wd:datatype>
> >>	  </wd:field>
> >>
> >>	  <wd:booleanfield id="address-select">
> >>       <wd:label>Select</wd:label>
> >>      </wd:booleanfield>
> >>
> >>   </wd:repeater>
> >>
> >>and bind data like this:
> >>
> >>  <wb:repeater id="addresses"
> >>    parent-path="."
> >>    row-path="addresses"
> >>    unique-row-id="oid"
> >>    unique-path="@oid"
> >>    >
> >>    <!-- important note: the row-path is used inside jxpath-createPath
> >>context,
> >>         as a consequence it cannot have dependent children or
> predicates
> >>-->
> >>
> >>    <wb:on-bind>
> >>    	<!-- executed on updates AND right after the insert -->
> >>      <wb:value id="street" path="street"/>
> >>    </wb:on-bind>
> >>
> >>    <wb:on-delete-row>-->
> >>    	<!-- chose on of these to test -->
> >>    	<!--
> >>      <wb:set-attribute name="row-state" value="deleted" />
> >>      -->
> >>      <wb:delete-node />
> >>    </wb:on-delete-row>
> >>
> >>    <wb:on-insert-row>
> >>      <wb:insert-bean
> >>        classname="com.imkenberg.bo.address.impl.AddressBean"
> >>        addmethod="addAddress"/>
> >>    </wb:on-insert-row>
> >>  </wb:repeater>
> >>
> >>And then the parent Bean has properties like this:
> >>public abstract class DefaultPartyBean implements Party {
> >>    private Long oid;
> >>    private String email;
> >>    private String password;
> >>    protected List addresses = new LinkedList();
> >>and also methods.
> >>    public PartyAddress getAddress()
> >>    public void addAddress( PartyAddress address )
> >>    public Iterator getAddressIterator()
> >>    public List getAddresses()
> >>    public void setAddresses( List addresses )
> >>
> >>And the AddressBean is simplely like this:
> >>public class AddressBean implements Address {
> >>    private Long oid;
> >>    private String city;
> >>    private String country;
> >>    private String houseNo;
> >>    private String zip;
> >>    private String street;
> >>    private long type;
> >>with get and set methods.
> >>
> >>I am glad for your helping
> >>
> >>Thanks
> >>
> >>Jianyu
> >>
> > 
> > 
> 
> -- 
> Marc Portier                            http://outerthought.org/
> Outerthought - Open Source, Java & XML Competence Support Center
> Read my weblog at              http://radio.weblogs.com/0116284/
> mpo@outerthought.org                              mpo@apache.org

Mime
View raw message