Hey guys, seeing the following exception org.apache.tapestry5.ioc.internal.util.TapestryException Failure reading parameter 'model' of component Tree:tree: org.apache.tapestry5.ioc.internal.util.TapestryException
location classpath:com/youtag/tag/pages/Tree.tml, line 2 java.lang.NullPointerException Filter stack frames Stack trace com.youtag.tag.pages.Tree.getTreeModel(Tree.java:54) org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:59) org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:254) org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:372) org.apache.tapestry5.corelib.components.Tree.getfieldvalue_model(Tree.java) org.apache.tapestry5.corelib.components.Tree.onExpandChildren(Tree.java:268) org.apache.tapestry5.corelib.components.Tree.dispatchComponentEvent(Tree.java) org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:923) org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1106) org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3200(ComponentPageElementImpl.java:61) org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1051) org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1048) org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1047) org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110) org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56) org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75) org.apache.tapestry5.services.TapestryModule$40.handle(TapestryModule.java:2454) org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:42) org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.j Here's the TreeModel which is being called by model public TreeModel<CategoryNode> getTreeModel() { if (treeModel == null) { ValueEncoder<CategoryNode> encoder = new ValueEncoder<CategoryNode>() { @Override public String toClient(CategoryNode node) { return node.getCategory().getId().toString(); } @Override public CategoryNode toValue(String node) { return hibernateCategoryDao.findById(new Integer(node)); } }; treeModel = new DefaultTreeModel<CategoryNode>(encoder, new CategoryTreeModelAdapter(hibernateCategoryDao), hibernateCategoryDao.findRoots()); } return treeModel; } Lance, I started setting up things as a Service @Inject private HibernateCategoryDao hibernateCategoryDao; AppModule binder.bind(CategoryDao.class, HibernateCategoryDao.class) but get the following exception Error obtaining injected value for field com.youtag.tag.pages.Tree.hibernateCategoryDao: No service implements the interface com.youtag.tag.services.impl.HibernateCategoryDao. Once we get that working, how do you inject hibernateCategoryDao into categoryTreeModelAdapter? BTW, I still don't understand the concrete / vs referencing interface. I'm sure I will after this task though. Could you provide an example? Thiago, I added the query.setParemeters, please let me know if I implemented it correctly. List<Category> cats = session.createCriteria(Category.class).add(criterion).list(); Map<Integer, CategoryNode> childNodes = new LinkedHashMap<Integer, CategoryNode>(); for (Category cat : cats) { CategoryNode childNode = new CategoryNode(); childNode.setCategory(cat); childNodes.put(cat.getId(), childNode); } Query query = session.createSQLQuery( "select c1.id, count(c2.id) " + "from CATEGORY c1 " + "left join CATEGORY c2 on c2.parent_id = c1.id " + "where c1.id in (:catIds) " + "group by c1.id"); int i = 0; List<Integer> catIds = new ArrayList<Integer>(); for (Iterator<CategoryNode> it = childNodes.values().iterator(); i < childNodes.size(); i++) { catIds.add(i, it.next().getCategory().getId()); } query.setParameterList("catIds", catIds); List queryResult = query.list(); Thanks Geoff, I think it will come in very useful to others not as skilled in backend development like myself. I will email you with the code once I have it fully working. -- View this message in context: http://tapestry.1045711.n5.nabble.com/Tapestry-TreeGrid-tp5462126p5494596.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