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: [email protected]
For additional commands, e-mail: [email protected]