model.add() method is added after BeanModel (variable model) is created (inside the getRegisteredModel method). The display of the bean edit form at the beginning is ok because I can see the Register html shown navigating to the Register html page. However, the error occurs after clicking the submit button (t:submitlabel="Register" ). The result throws
Caused by: java.lang.RuntimeException: Bean editor model for example.domain.User already contains a property model for property 'account'. at org.apache.tapestry5.internal.beaneditor.BeanModelImpl.validateNewPropertyName(BeanModelImpl.java:87) at org.apache.tapestry5.internal.beaneditor.BeanModelImpl.add(BeanModelImpl.java:128) at org.apache.tapestry5.internal.beaneditor.BeanModelImpl.add(BeanModelImpl.java:79) at org.jecommerce.pages.Register.getRegisterModel(Register.java:92) at $PropertyConduit_12405b70484.get($PropertyConduit_12405b70484.java) at org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:58) ... 74 more Following is the code used Register.java (Page class) public class Register { @Inject private BeanModelSource beanModelSource; @Property private User user; @InjectPage private Index index; @InjectPage private Login login; public BeanModel getRegisterModel(){ BeanModel model = beanModelSource.create(User.class, ...); model.exclude("page"); model.add("account").label("Account").sortable(false); model.reorder("account", "password", "name", "sex", "address"); return model; } Object onSuccess(){ ... return login; } } Register.tml (View class) <t:beaneditform t:submitlabel="Register" t:object="user" t:remove="page" t:model="registerModel"> <t:parameter name="account"> <t:label for="Account"/> <t:textField t:id="account" t:model="user" t:value="user.account" t:validate="required,regexp"/> </t:parameter> <t:parameter name="name"> <t:label for="Name"/> <t:textField t:id="name" t:model="user" t:value="user.name" t:validate="required,minlength=5"/> </t:parameter> <t:parameter name="password"> <t:label for="Password"/> <t:passwordField t:id="password" t:model="user" t:value="user.password" t:validate="required,minlength=2"/> </t:parameter> <t:parameter name="sex"> <t:label for="Sex"/> <t:select t:id="sex" t:model="genders" t:value="user.sex" t:blankOption="never"/> </t:parameter> </t:beaneditform> cordenier christophe wrote: > > When are you doing this add ? > > You error can be due for exemple to a multiple call to add() on a > persistent > variable. > > 2009/9/28 neo anderson <javadeveloper...@yahoo.co.uk> > >> >> >> Thanks for your reply. But when adding the method >> >> model.add("account").label("Account").sortable(false); >> >> The error occurrs after clicking the beaneditform button, the log shows >> the >> following exception: >> >> [ERROR] TapestryModule.RequestExceptionHandler Processing of request >> failed >> with uncaught exception: Failure reading parameter 'model' of component >> Register:beaneditform: Bean editor model for example.domain.User already >> contains a property model for property 'account'. >> ... >> ... >> Caused by: java.lang.RuntimeException: Bean editor model for >> example.domain.User already contains a property model for property >> 'account'. >> at >> >> org.apache.tapestry5.internal.beaneditor.BeanModelImpl.validateNewPropertyName(BeanModelImpl.java:87) >> at >> >> org.apache.tapestry5.internal.beaneditor.BeanModelImpl.add(BeanModelImpl.java:128) >> at >> >> org.apache.tapestry5.internal.beaneditor.BeanModelImpl.add(BeanModelImpl.java:79) >> at >> org.jecommerce.pages.Register.getRegisterModel(Register.java:92) >> at >> $PropertyConduit_1240259d749.get($PropertyConduit_1240259d749.java) >> at >> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:58) >> ... 74 more >> >> >> It looks like the BeanModel already contains the proerty account. I am >> really confused because no matter I add or do not add a new property, the >> exception will always be thrown. What place may I go wrong? Or is there >> any >> example I can check if anything I miss? >> >> Thank you very much. >> >> >> >> cordenier christophe wrote: >> > >> > To add a synthetic property, you only have to call add(propertyName) on >> > the >> > BeanModel. >> > >> > By setting the datatype on the resulting PropertyModel or by using >> > t:parameter, you will be able to create the display for the >> corresponding >> > property in your beaneditform. >> > >> > 2009/9/28 neo anderson <javadeveloper...@yahoo.co.uk> >> > >> >> >> >> It is the line where PropertyConduitSource (variable source.create() >> ... >> >> ) >> >> create synthetic property account as the following code. >> >> >> >> PropertyConduit accountProperty = >> >> source.create(User.class, >> >> "account"); >> >> >> >> Is this the right way to create PropertyConduit? I tried to change it >> >> using >> >> String.class, but the error is the same (NullPointerException). I >> think >> >> there should have something I miss, but that's the method I found on >> the >> >> mailinglist. I am confused indeed. >> >> >> >> >> >> >> http://www.nabble.com/T5%3A-Working-with-BeanModel-td18231888.html#a18352011 >> >> >> >> >> >> >> >> >> >> ccordenier wrote: >> >> > >> >> > What corresponds to line 92 in your code ? >> >> > >> >> > -----Message d'origine----- >> >> > De : neo anderson [mailto:javadeveloper...@yahoo.co.uk] >> >> > Envoyé : lundi 28 septembre 2009 14:23 >> >> > À : users@tapestry.apache.org >> >> > Objet : Re: Bean editor model for User already contains a property >> >> model >> >> > for property 'account' >> >> > >> >> > >> >> > >> >> > Now I use the folloing method to create synthetic property >> >> > >> >> > PropertyConduit accountProperty = >> >> > source.create(User.class, "account"); >> >> > ClassPropertyAdapter cpa = >> >> access.getAdapter(User.class); >> >> > PropertyAdapter pa = >> cpa.getPropertyAdapter("account"); >> >> > String dt = analyzer.identifyDataType(pa); >> >> > >> >> > >> >> >> model.add("account",accountProperty).dataType(dt).label("Account").sortable(false); >> >> > >> >> > However, it throws NullPointerException without further detail. >> >> > >> >> > Caused by: java.lang.NullPointerException >> >> > at >> >> > org.jecommerce.pages.Register.getRegisterModel(Register.java:92) >> >> > at >> >> > $PropertyConduit_12400839bf9.get($PropertyConduit_12400839bf9.java) >> >> > at >> >> > >> >> >> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:58) >> >> > ... 91 more >> >> > >> >> > What additional information I need to provide (or anything is >> missing) >> >> so >> >> > that it won't throw this error? >> >> > >> >> > Thanks for help. >> >> > >> >> > >> >> > >> >> > Thiago H. de Paula Figueiredo wrote: >> >> >> >> >> >> Em Wed, 23 Sep 2009 17:58:08 -0300, neo anderson >> >> >> <javadeveloper...@yahoo.co.uk> escreveu: >> >> >> >> >> >> >> >> >>> I have an domain object named User, in which it has a field called >> >> >>> `account'. However, the User object only provide method >> getAccount(), >> >> >>> but does not >> >> >>> provide method setAccount(String account). >> >> >> >> >> >> BeanModelSource (used when a BeanModel is needed and you don't >> provide >> >> >> one) ignores read-only properties. It doesn't care about fields, >> just >> >> >> about getters and setters. >> >> >> >> >> >>> In the page object e.g. Register, in which I build a BeanModel >> using >> >> >>> BeanModelSource.create(User.class, ...) >> >> >> >> >> >> This method is deprecated. use createDisplayModel() or >> >> createEditModel() >> >> >> instead. >> >> >> >> >> >>> 1.) in the Register page object, BeanModel does not use >> >> >>> `BeanModel.add("account",null).label("Account").sortable(false)' >> >> method >> >> >>> to create account field. >> >> >>> >> >> >>> Error: >> >> >>> aused by: java.lang.RuntimeException: Bean editor model for User >> does >> >> >>> not >> >> >>> contain a property named 'account'. Available properties: >> address, >> >> >>> name, >> >> >>> password, sex. >> >> >> >> >> >> You can't reorder a model using some property that doesn't exist. >> >> >> >> >> >>> Caused by: java.lang.RuntimeException: Bean editor model for User >> >> >>> already >> >> >>> contains a property model for property 'account'. >> >> >> >> >> >> You can't add the same property twice in the same model. >> >> >> >> >> >>> What is the correct way to add a column that the User object >> doesn't >> >> >>> provide get/set method at the same time? >> >> >> >> >> >> For BeanEditForm or BeanEditor, you'll need to provide your own >> >> >> PropertyConduit to model.add(String property, PropertyConduit >> >> conduit). >> >> >> >> >> >> -- >> >> >> Thiago H. de Paula Figueiredo >> >> >> Independent Java consultant, developer, and instructor >> >> >> http://www.arsmachina.com.br/thiago >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> >> >> >> >> >> >> >> >> > >> >> > -- >> >> > View this message in context: >> >> > >> >> >> http://www.nabble.com/Bean-editor-model-for-User-already-contains-a-property-model-for-property-%27account%27-tp25531292p25644707.html >> >> > Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> > >> >> > >> >> > >> --------------------------------------------------------------------- >> >> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> > For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > >> >> > >> >> > >> >> > >> >> > Ce message et les pièces jointes sont confidentiels et réservés à >> >> l'usage >> >> > exclusif de ses destinataires. Il peut également être protégé par le >> >> > secret professionnel. Si vous recevez ce message par erreur, merci >> d'en >> >> > avertir immédiatement l'expéditeur et de le détruire. L'intégrité du >> >> > message ne pouvant être assurée sur Internet, la responsabilité du >> >> groupe >> >> > Atos Origin ne pourra être recherchée quant au contenu de ce >> message. >> >> Bien >> >> > que les meilleurs efforts soient faits pour maintenir cette >> >> transmission >> >> > exempte de tout virus, l'expéditeur ne donne aucune garantie à cet >> >> égard >> >> > et sa responsabilité ne saurait être recherchée pour tout dommage >> >> > résultant d'un virus transmis. >> >> > >> >> > This e-mail and the documents attached are confidential and intended >> >> > solely for the addressee; it may also be privileged. If you receive >> >> this >> >> > e-mail in error, please notify the sender immediately and destroy >> it. >> >> As >> >> > its integrity cannot be secured on the Internet, the Atos Origin >> group >> >> > liability cannot be triggered for the message content. Although the >> >> sender >> >> > endeavours to maintain a computer virus-free network, the sender >> does >> >> not >> >> > warrant that this transmission is virus-free and will not be liable >> for >> >> > any damages resulting from any virus transmitted. >> >> > >> >> > >> >> > >> --------------------------------------------------------------------- >> >> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> > For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/Bean-editor-model-for-User-already-contains-a-property-model-for-property-%27account%27-tp25531292p25645385.html >> >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> >> >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Bean-editor-model-for-User-already-contains-a-property-model-for-property-%27account%27-tp25531292p25652604.html >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > > -- View this message in context: http://www.nabble.com/Bean-editor-model-for-User-already-contains-a-property-model-for-property-%27account%27-tp25531292p25662082.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org