Folks, I am wondering if null properties are suppose to be dealt with morwe gracefully within T-5.4 as everytime I create an object it works fine and is displayed within my gallery widget but if I omit property fields declared inside @Embeddable classes, they get stored in hibernate as nulls and any subsequent Edits crash the app due to these omissions. Is tapestry suppose to handle this properly to avoid crash ?
Alleged as follows... I have a curious EditBlock DisplayBlock issue with regard to entity in hibernate database. Here is the model layout I have Person.Java where Person is a base class Player class But Person.Java has a data member private Demographics demographics = new Demographics(); and here is how Demographics is declared Demographics.Java... @Embeddable public class Demographics ok so Player extends from Person Person has demographics Player declares the following: @Column(columnDefinition = "longtext", length = 6291456) @PropertyDescriptor(readOnly = false) public String getBio() { return bio; } My issue is weird... Currently I can create Players at this demo site http://psinh.ddns.net:9011/psi/home If I create a player it gets saved fine On subsequent EDIT operations (you can edit as player by clicking on any image in Gallery)... Only Players who's demographics were all filled in with legitimate string data get displayed and edited. The problem being... the app crashes on Players who's Demographics were omitted on creation and all properties within the @Embedded instance are null. Its reproducible everytime at http://psinh.ddns.net:9011/psi/home Here is the crash trace An exception has occurred processing this request. Render queue error in SetupRender[tynamo/PropertyEditBlocks:editor]: Exception instantiating instance of org.tynamo.psi.psi.model.Demographics (for component 'tynamo/PropertyEditBlocks:editor'): org.apache.tapestry5.ioc.internal.OperationException: No service implements the interface java.lang.String. with reload: Force a reload of component classes. This is often necessary after fixing a class that previously failed to compile due to errors. org.apache.tapestry5.internal.services.RenderQueueException Render queue error in SetupRender[tynamo/PropertyEditBlocks:editor]: Exception instantiating instance of org.tynamo.psi.psi.model.Demographics (for component 'tynamo/PropertyEditBlocks:editor'): org.apache.tapestry5.ioc.internal.OperationException: No service implements the interface java.lang.String. activeComponents edit/Player (class org.tynamo.psi.psi.pages.edit.PlayerEdit) edit/Player:layout (class org.tynamo.psi.psi.components.Layout) classpath:org/tynamo/psi/psi/pages/edit/PlayerEdit.tml, line 2 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <t:layout title="title" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter"> 3 <p:subMenuBlock> 4 <ul> 5 <ul id="local"> 6 </ul> 7 </ul> edit/Player:form (class org.apache.tapestry5.corelib.components.Form) classpath:org/tynamo/psi/psi/pages/edit/PlayerEdit.tml, line 17 12 13 <h1>${title}</h1> 14 15 <br/> 16 17 <t:form validate="bean"> 18 <t:errors/> 19 20 <div class="t-beaneditor"> 21 22 <t:beaneditor object="mb:bean" t:mixins="tynamo/BeanModelAdvisor"> edit/Player:beaneditor (class org.apache.tapestry5.corelib.components.BeanEditor) classpath:org/tynamo/psi/psi/pages/edit/PlayerEdit.tml, line 22 17 <t:form validate="bean"> 18 <t:errors/> 19 20 <div class="t-beaneditor"> 21 22 <t:beaneditor object="mb:bean" t:mixins="tynamo/BeanModelAdvisor"> 23 24 <p:bio> 25 <t:label for="bio">BIO</t:label> 26 <t:textarea t:id="bio" value="bean.bio" /> 27 </p:bio> edit/Player:beaneditor.loop (class org.apache.tapestry5.corelib.components.Loop) classpath:org/apache/tapestry5/corelib/components/BeanEditor.tml, line 3 1 <t:loop xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" 2 source="model.propertyNames" formState="ITERATION" 3 value="propertyName"> 4 <t:propertyEditor property="propertyName" object="object" model="model" overrides="overrides"/> 5 </t:loop> edit/Player:beaneditor.propertyeditor (class org.apache.tapestry5.corelib.components.PropertyEditor) classpath:org/apache/tapestry5/corelib/components/BeanEditor.tml, line 4 1 <t:loop xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" 2 source="model.propertyNames" formState="ITERATION" 3 value="propertyName"> 4 <t:propertyEditor property="propertyName" object="object" model="model" overrides="overrides"/> 5 </t:loop> tynamo/PropertyEditBlocks:editor (class org.apache.tapestry5.corelib.components.BeanEditor) classpath:org/tynamo/pages/PropertyEditBlocks.tml, line 58 53 </t:block> 54 55 <t:block id="embedded"> 56 <fieldset class="group"> 57 <legend>${propertyEditContext.label}</legend> 58 <t:beaneditor t:id="editor" object="propertyEditContext.propertyValue" model="embeddedModel" /> 59 </fieldset> 60 </t:block> 61 62 <t:block id="blob"> 63 <label>${propertyEditContext.label}</label> location classpath:org/tynamo/pages/PropertyEditBlocks.tml, line 58 org.apache.tapestry5.ioc.internal.util.TapestryException Exception instantiating instance of org.tynamo.psi.psi.model.Demographics (for component 'tynamo/PropertyEditBlocks:editor'): org.apache.tapestry5.ioc.internal.OperationException: No service implements the interface java.lang.String. location classpath:org/tynamo/pages/PropertyEditBlocks.tml, line 58