Hey, Viktor,
I downloaded the head version of tacos from cvs and built it, but am still
getting the commit() error. I've tried various configurations for the
property-specifications, persistent="yes"; persistent="no", but with no
success. The results of trying your ideas follow:
1) no state param supplied: failed if I made the value binding persistent
(commit() error). If I made the value binding not persistent, the page would
render, but then I'd get a null error when clicking on an expand icon.
2) I've pretty much been doing this option from the get go. As soon as I
turn persistence on, I get the commit() error.
3) I'm not 100% sure what you mean by "supplied by page", but I did set
persistence on, but got the commit() error again. setting the initial-value
of the state map to anything other than HashSet causes a class cast
exception.
Here's my code:
[the .page file: ]
...
<property-specification name="projectTreeProvider"
type="net.sf.tacos.model.ITreeContentProvider"/>
<property-specification name="treeState"
persistent="yes"
type="java.util.HashSet"
initial-value="new java.util.HashSet()"/>
<property-specification name="currentTreeNode"
type="com.jasf.domain.UserProject"
persistent="yes"/>
<component id="projectTree" type="tacos:Tree">
<binding name="contentProvider" expression="projectTreeProvider"/>
<binding name="state" expression="treeState"/>
<binding name="value" expression="currentTreeNode"/>
</component>
[end .page file]
[the java file]
...
public abstract ITreeContentProvider getProjectTreeProvider();
public abstract void setProjectTreeProvider(ITreeContentProvider provider);
....
/* (non-Javadoc)
* @see org.apache.tapestry.IPage#beginPageRender()
*/
public void pageBeginRender(PageEvent event) {
setProjectTreeProvider(new ProjectTreeContentProvider(getProjects()));
}
...
/**
* Returns a user's projects.
* @return
*/
public List getProjects() {
User user = ((Visit)getVisit()).getUser(getRequestCycle());
List userProjects = getTimeService().getRootUserProjects(user);
log.debug("Found " + userProjects.size() + " projects for user " +
user.getUserId() );
return userProjects;
}
...
[end java file]
[the html page]
<form jwcid="@Form" >
<span jwcid="projectTree" >
<span jwcid="@InsertText" value="ognl:currentTreeNode.project.projectName"
/>
</span>
<span jwcid="[EMAIL PROTECTED]" source="ognl:projects"
value="ognl:project" >
<span jwcid="@ProjectBlock" project="ognl:project" />
</span>
<input jwcid="@Submit" type="submit" listener="ognl:listeners.formSubmit"
value="Submit" label="Submit"/> <input jwcid="@Submit" listener="ognl:
listeners.goToTimeEntry" value="Cancel" label="Cancel" />
</form>
[end html page]
Do you have a working example of what I'm trying to do? I'm attempting to
use the tree to display what objects belong to a user. The List that feeds
my ITreeContentProvider is always being set via a call to Hibernate within
the beginPageRender() method.
One last question: what properties of the tacos:Tree component must be
persistent in order for the tree to work?
thanks for your input,
John
On Apr 12, 2005 5:43 AM, Viktor Szathmary <[EMAIL PROTECTED]> wrote:
>
> hi,
>
> this is probably not an issue with the contentProvider, but the
> initialization sequence of the tree "state" binding. there was a small
> bug in the tree component regarding this: the component tried to
> default a persistent binding a bit too late - this should be fixed in
> CVS head - try building from there. alternatively, try these scenarios
> (with the last release):
>
> 1) no state param supplied at all
> 2) state supplied from page property (persistent=yes, but no
> initial-value)
> 3) state supplied from page (persistent=yes, initial-value="
> java.util.HashMap").
>
> regards,
> viktor
>
>
> On Apr 12, 2005 3:21 AM, John Gordon <[EMAIL PROTECTED]> wrote:
> > Hi All,
> >
> > I've been banging my head on this one: I keep running into the following
> > error in the rendering of a page when trying to use the tacos:Tree
> > component:
> >
> > Page recorder for page [my page name] is locked after a commit()
> >
> > I must be getting something confused between setting persistence on
> abstract
> > classes correctly or not fully understanding the rewind/record process
> > entirely. The Tacos:Tree examples are not a whole bunch of help here as
> they
> > creat static final ITreeContenProvider fields in the page classes. I'm
> > dynamically generated my ITreecontentProvider with a List of objects
> that
> > are returned from the hibernate API.
> >
> > All the code that creates my ITreeContentProvider is done in the
> > beginPageRender() method.
> >
> > Does anyone have an example of using the tacos:Tree component with a
> > non-static ITreeContentProvider?
> >
> > Thanks, I really appreciate it.
> >
> > John
> >
> >
>
--
"The present letter is a very long one, simply because I had no leisure to
make it shorter." -- Blaise Pascal
------------------------------------------------------------------
[EMAIL PROTECTED]
(m)415.515.3549