Re: why is DefaultNestedTree component treated as property within PropertyResolver ?
Hi Sven, I solved the problem related to PropertyResolver by this way: the model of my "Modal"-extension is now a "Model" (String) and not "CompoundPropertyModel". My next problem is: the tree isn't expandable. I'll try to fix it before I post another question. Thank you -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/why-is-DefaultNestedTree-component-treated-as-property-within-PropertyResolver-tp4678549p4678572.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: why is DefaultNestedTree component treated as property within PropertyResolver ?
Thank you both for your hints, I'm just testing with a MCVE. It seems the behaviour of the DFN depends to which parent it belongs (WebPage or Modal). It also seems to matter if the Modal is opened via an AjaxLink in a page or within a form -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/why-is-DefaultNestedTree-component-treated-as-property-within-PropertyResolver-tp4678549p4678564.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: why is DefaultNestedTree component treated as property within PropertyResolver ?
Hi Ulrich, My guess (based on quickly looking at your code on my phone): the DeafultNestedTree probably uses a model to store open/closed state or selected states. Since you don't provide it in the constructor, wicket automatically creates a property model since a parent component has a CompoundPropertyModel. Check if the DNT has additional constructors which take an IModel>. Provide your own model and your problem should be fixed :-) // Bas Verstuurd vanaf mijn iPhone > Op 18 aug. 2017 om 15:37 heeft Knaack, Ulrich > het volgende geschreven: > > Hi, > > I'm trying to display a DefaultNestedTree (id="dataTreeView") within a > Bootstrap Modal > > Instances of Service contain an ID that I use for retrieving a recursive data > structure from database. > The recursive structure is realized by instances of "RecursiveData" . > See line 15 and method onModelChanged(). > RecursiveData contains self referencing properties "parent" and "children" > > 00 import com.example.Service > 00 > 01 public class DataViewDialog extends Modal > 02 { > 03 private static final long serialVersionUID = 7766394608644043929L; > 04 > 05 @SpringBean > 06 private RecursiveDataBean dataBean; > 07 > 08 private RecursiveDataTreeProvider treeProvider; > 09 > 10 public DataViewDialog(String id, IModel model) > 11 { > 12 super(id, model); > 13 > 14 Service service = model.getObject(); > 15 List data = > dataBean.getRootDataByServiceId(service.getServiceId()); > 16 > 17 BootstrapForm form = new BootstrapForm<>("form"); > 18 add(form); > 19 > 20 treeProvider = new RecursiveDataTreeProvider(data); > 21 > 22 DefaultNestedTree tree = > 23 new DefaultNestedTree("dataTreeView" > 24 , treeProvider) > 25 { > 26 private static final long serialVersionUID = > -7659715973883984412L; > 27 > 28 @Override > 29 protected Component newContentComponent(String id1 > 30 , IModel node) > 31 { > 32 return super.newContentComponent(id1, node); > 33 } > 34 }; > 35 > 36 form.add(tree); > 37 > 38 BootstrapAjaxButton close = new BootstrapAjaxButton("close" > 39 , Model.of("schließen"), Buttons.Type.Primary) > 40 { > 41 private static final long serialVersionUID = > 7877084020329862442L; > 42 > 43 @Override > 44 protected void onSubmit(AjaxRequestTarget target, Form form) > 45 { > 46 super.onSubmit(target, form); > 47 appendCloseDialogJavaScript(target); > 48 } > 49 }; > 50 form.add(close); > 51 } > 52 > 53 @Override > 54 protected void onModelChanged() > 55 { > 56 super.onModelChanged(); > 57 String serviceId = getModel().getObject().getServiceId(); > 58 List newDataList = > dataBean.getRootDataByServiceId(serviceId); > 59 treeProvider.setRecursiveData(newDataList); > 60 } > 61 } > > I know from debugging that my implementation of ITreeProvider > is working well, > also after execution of "onModelChanged()". > > But when the tree is rendered, this error occurs: > > org.apache.wicket.WicketRuntimeException: Property could not be resolved for > class: class com.example.Service expression: dataTreeView > at > org.apache.wicket.core.util.lang.PropertyResolver.getGetAndSet(PropertyResolver.java:393) > at > org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:355) > at > org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:261) > at > org.apache.wicket.core.util.lang.PropertyResolver.getValue(PropertyResolver.java:111) > at > org.apache.wicket.model.AbstractPropertyModel.getObject(AbstractPropertyModel.java:86) > at > org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getModelObject(AbstractTree.java:161) > at > org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getState(AbstractTree.java:240) > at > org.apache.wicket.extensions.markup.html.repeater.tree.nested.Subtree.isVisible(Subtree.java:136) > > Why does Wicket try to resolve a property that doesn't exist within "Service" > ? > > I've tried a version without a BootstrapForm within the Modal, where > "dataTreeView" is attached to the Modal directly. Same problem. > > Mit freundlichen Grüßen > Ulrich Knaack > > Landesamt für Geoinformation und Landesvermessung Niedersachsen (LGLN) > - Landesvermessung und Geobasisinformation - Landesbetrieb - > Fachgebiet 224 - Geodateninfrastruktur > Podbielskistraße 331, 30659 Hannover > Tel.: +49 511 64609-287 > Fax: +49 511 64609-161 > mailto:ulrich.kna...@lgln.niedersachsen.de > www.lgln.niedersachsen.de > >
Re: why is DefaultNestedTree component treated as property within PropertyResolver ?
Hi, nested tree stores the expansion of its nodes in its model. You have added your tree to a component with a CompoundPropertyModel, thus the tree is inheriting its model from that parental component. You can override #initModel() and let it call #newModel() directly, this skips the "compound property model inheriting" stuff. Hope this helps Sven Am 18.08.2017 um 15:36 schrieb Knaack, Ulrich: Hi, I'm trying to display a DefaultNestedTree (id="dataTreeView") within a Bootstrap Modal Instances of Service contain an ID that I use for retrieving a recursive data structure from database. The recursive structure is realized by instances of "RecursiveData" . See line 15 and method onModelChanged(). RecursiveData contains self referencing properties "parent" and "children" 00 import com.example.Service 00 01 public class DataViewDialog extends Modal 02 { 03 private static final long serialVersionUID = 7766394608644043929L; 04 05 @SpringBean 06 private RecursiveDataBean dataBean; 07 08 private RecursiveDataTreeProvider treeProvider; 09 10 public DataViewDialog(String id, IModel model) 11 { 12 super(id, model); 13 14 Service service = model.getObject(); 15 List data = dataBean.getRootDataByServiceId(service.getServiceId()); 16 17 BootstrapForm form = new BootstrapForm<>("form"); 18 add(form); 19 20 treeProvider = new RecursiveDataTreeProvider(data); 21 22 DefaultNestedTree tree = 23 new DefaultNestedTree("dataTreeView" 24 , treeProvider) 25 { 26 private static final long serialVersionUID = -7659715973883984412L; 27 28 @Override 29 protected Component newContentComponent(String id1 30 , IModel node) 31 { 32 return super.newContentComponent(id1, node); 33 } 34 }; 35 36 form.add(tree); 37 38 BootstrapAjaxButton close = new BootstrapAjaxButton("close" 39 , Model.of("schließen"), Buttons.Type.Primary) 40 { 41 private static final long serialVersionUID = 7877084020329862442L; 42 43 @Override 44 protected void onSubmit(AjaxRequestTarget target, Form form) 45 { 46 super.onSubmit(target, form); 47 appendCloseDialogJavaScript(target); 48 } 49 }; 50 form.add(close); 51 } 52 53 @Override 54 protected void onModelChanged() 55 { 56 super.onModelChanged(); 57 String serviceId = getModel().getObject().getServiceId(); 58 List newDataList = dataBean.getRootDataByServiceId(serviceId); 59 treeProvider.setRecursiveData(newDataList); 60 } 61 } I know from debugging that my implementation of ITreeProvider is working well, also after execution of "onModelChanged()". But when the tree is rendered, this error occurs: org.apache.wicket.WicketRuntimeException: Property could not be resolved for class: class com.example.Service expression: dataTreeView at org.apache.wicket.core.util.lang.PropertyResolver.getGetAndSet(PropertyResolver.java:393) at org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:355) at org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:261) at org.apache.wicket.core.util.lang.PropertyResolver.getValue(PropertyResolver.java:111) at org.apache.wicket.model.AbstractPropertyModel.getObject(AbstractPropertyModel.java:86) at org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getModelObject(AbstractTree.java:161) at org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getState(AbstractTree.java:240) at org.apache.wicket.extensions.markup.html.repeater.tree.nested.Subtree.isVisible(Subtree.java:136) Why does Wicket try to resolve a property that doesn't exist within "Service" ? I've tried a version without a BootstrapForm within the Modal, where "dataTreeView" is attached to the Modal directly. Same problem. Mit freundlichen Grüßen Ulrich Knaack Landesamt für Geoinformation und Landesvermessung Niedersachsen (LGLN) - Landesvermessung und Geobasisinformation - Landesbetrieb - Fachgebiet 224 - Geodateninfrastruktur Podbielskistraße 331, 30659 Hannover Tel.:+49 511 64609-287 Fax: +49 511 64609-161 mailto:ulrich.kna...@lgln.niedersachsen.de www.lgln.niedersachsen.de - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h..
why is DefaultNestedTree component treated as property within PropertyResolver ?
Hi, I'm trying to display a DefaultNestedTree (id="dataTreeView") within a Bootstrap Modal Instances of Service contain an ID that I use for retrieving a recursive data structure from database. The recursive structure is realized by instances of "RecursiveData" . See line 15 and method onModelChanged(). RecursiveData contains self referencing properties "parent" and "children" 00 import com.example.Service 00 01 public class DataViewDialog extends Modal 02 { 03 private static final long serialVersionUID = 7766394608644043929L; 04 05 @SpringBean 06 private RecursiveDataBean dataBean; 07 08 private RecursiveDataTreeProvider treeProvider; 09 10 public DataViewDialog(String id, IModel model) 11 { 12 super(id, model); 13 14 Service service = model.getObject(); 15 List data = dataBean.getRootDataByServiceId(service.getServiceId()); 16 17 BootstrapForm form = new BootstrapForm<>("form"); 18 add(form); 19 20 treeProvider = new RecursiveDataTreeProvider(data); 21 22 DefaultNestedTree tree = 23 new DefaultNestedTree("dataTreeView" 24 , treeProvider) 25 { 26 private static final long serialVersionUID = -7659715973883984412L; 27 28 @Override 29 protected Component newContentComponent(String id1 30 , IModel node) 31 { 32 return super.newContentComponent(id1, node); 33 } 34 }; 35 36 form.add(tree); 37 38 BootstrapAjaxButton close = new BootstrapAjaxButton("close" 39 , Model.of("schließen"), Buttons.Type.Primary) 40 { 41 private static final long serialVersionUID = 7877084020329862442L; 42 43 @Override 44 protected void onSubmit(AjaxRequestTarget target, Form form) 45 { 46 super.onSubmit(target, form); 47 appendCloseDialogJavaScript(target); 48 } 49 }; 50 form.add(close); 51 } 52 53 @Override 54 protected void onModelChanged() 55 { 56 super.onModelChanged(); 57 String serviceId = getModel().getObject().getServiceId(); 58 List newDataList = dataBean.getRootDataByServiceId(serviceId); 59 treeProvider.setRecursiveData(newDataList); 60 } 61 } I know from debugging that my implementation of ITreeProvider is working well, also after execution of "onModelChanged()". But when the tree is rendered, this error occurs: org.apache.wicket.WicketRuntimeException: Property could not be resolved for class: class com.example.Service expression: dataTreeView at org.apache.wicket.core.util.lang.PropertyResolver.getGetAndSet(PropertyResolver.java:393) at org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:355) at org.apache.wicket.core.util.lang.PropertyResolver.getObjectWithGetAndSet(PropertyResolver.java:261) at org.apache.wicket.core.util.lang.PropertyResolver.getValue(PropertyResolver.java:111) at org.apache.wicket.model.AbstractPropertyModel.getObject(AbstractPropertyModel.java:86) at org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getModelObject(AbstractTree.java:161) at org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree.getState(AbstractTree.java:240) at org.apache.wicket.extensions.markup.html.repeater.tree.nested.Subtree.isVisible(Subtree.java:136) Why does Wicket try to resolve a property that doesn't exist within "Service" ? I've tried a version without a BootstrapForm within the Modal, where "dataTreeView" is attached to the Modal directly. Same problem. Mit freundlichen Grüßen Ulrich Knaack Landesamt für Geoinformation und Landesvermessung Niedersachsen (LGLN) - Landesvermessung und Geobasisinformation - Landesbetrieb - Fachgebiet 224 - Geodateninfrastruktur Podbielskistraße 331, 30659 Hannover Tel.:+49 511 64609-287 Fax: +49 511 64609-161 mailto:ulrich.kna...@lgln.niedersachsen.de www.lgln.niedersachsen.de - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org