Sorry I wrote too soon, I didn't put '{ }' around the updateComponents binding.
Unfortunately I still get an exception. This time without much debug
that I can make sense of:
org.apache.hivemind.ApplicationRuntimeException
component: [EMAIL PROTECTED]
location: context:/InvestigationsConsole.html
java.lang.ArrayStoreException
Stack Trace:
java.lang.System.arraycopy(Native Method)
java.util.ArrayList.toArray(ArrayList.java:305)
net.sf.tacos.ajax.components.AjaxDirectLink.getLink(AjaxDirectLink.java:69)
org.apache.tapestry.link.DefaultLinkRenderer.constructURL(DefaultLinkRenderer.java:112)
org.apache.tapestry.link.DefaultLinkRenderer.renderLink(DefaultLinkRenderer.java:62)
org.apache.tapestry.link.AbstractLinkComponent.renderComponent(AbstractLinkComponent.java:95)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
net.sf.tacos.ajax.components.PartialForBean.renderComponent(PartialForBean.java:201)
$PartialForBean_21.renderComponent($PartialForBean_21.java)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:86)
$IfBean_5.renderComponent($IfBean_5.java)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:44)
$RenderBody_17.renderComponent($RenderBody_17.java)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
org.apache.tapestry.html.Body.renderComponent(Body.java:129)
$Body_15.renderComponent($Body_15.java)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
org.apache.tapestry.html.Shell.renderComponent(Shell.java:114)
On 1/10/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> Hi I am trying to get the use the tacos AjaxDirectLink component. I
> pretty much using the example given on the website except substituting
> the .page specs in annotations.
> Here is the following exception I am getting:
>
> org.apache.tapestry.BindingException
> Error converting value for parameter updateComponents: No type
> converter for type java.util.Collection is available.
> binding:ExpressionBinding[InvestigationsConsole 'selectedCases', currCase.id]
> component:[EMAIL PROTECTED]
> location:
>
> Annotation
> @org.apache.tapestry.annotations.Component(inheritInformalParameters=false,
> bindings=[listener=listener:toggleCase, parameters=ognl:currCase.id,
> updateComponents=ognl:'selectedCases', currCase.id,
> effects=template:{highlight:{selectedCases:'[255,255,184], 500,
> 500','${currCase}':'[255,255,184], 500, 500'}},
> statusElement=literal:status], id=linkToggle,
> type=tacos:AjaxDirectLink) of public abstract
> net.sf.tacos.ajax.components.AjaxDirectLink
> view.pages.InvestigationsConsole.getLinkToggle()
>
> Here is my code for my page:
>
> public abstract class InvestigationsConsole extends SecuredPage implements
> PageBeginRenderListener {
>
> public void pageBeginRender(PageEvent arg0) {
> ICaseHome caseHome = getCaseHome();
>
> Collection<TrCase> cases = caseHome
>
> .findCasesBySupportId(getVisitObject().getPortaluser()
> .getSupportid());
>
> if (cases.size() > 0) {
> setOpenCases(true);
> } else {
> setOpenCases(false);
> }
> }
>
> protected void finishLoad(){
> log.info("Setting selected Items");
> setSelectedItems(new HashSet());
> }
>
> public void toggleCase(IRequestCycle irc) {
> long caseid = (Long) irc.getListenerParameters()[0];
> TrCase trCase = getCaseHome().findCaseById(caseid);
> Set c = getSelectedItems();
> if (c.contains(trCase)) {
> c.remove(trCase);
> } else {
> c.add(trCase);
> }
> setSelectedItems(c);
> AjaxWebRequest ajax = (AjaxWebRequest) irc
> .getAttribute(AjaxWebRequest.AJAX_REQUEST);
> if (ajax != null)
> ajax.addStatusResponse("Case selected..");
>
> }
>
> public List getCases(){
> return new ArrayList(getCaseHome()
> .findCasesBySupportId(getVisitObject().getPortaluser()
> .getSupportid()));
> }
>
>
> //public abstract Collection<TrCase> getCases();
> //public abstract void setCases(Collection<TrCase> cases);
> @Persist
> public abstract Set getSelectedItems();
> public abstract void setSelectedItems(Set selectedItems);
>
>
> public void openCaseListener(IRequestCycle cycle) {
> cycle.activate(getOpenCasePage());
> }
>
> public abstract boolean isOpenCases();
> public abstract void setOpenCases(boolean openCases);
> public boolean isCurrSelected() {
> return getSelectedItems().contains(getCurrCase());
> }
> public abstract TrCase getCurrCase();
> public abstract void setSelectItem(Object selectItem);
> public abstract Object getSelectItem();
>
> // Annotations
> @InjectState("visit")
> public abstract Visit getVisitObject();
>
> @InjectPage("OpenCase")
> public abstract IPage getOpenCasePage();
>
> @InjectObject("service:trustedresponse.CaseHome")
> public abstract ICaseHome getCaseHome();
>
> @InjectObject("service:tacos.AjaxWebRequest")
> public abstract AjaxWebRequest getAjaxRequest();
>
> @Component(id="foreachCase", type="tacos:PartialFor", bindings = {
> "source=cases", "value=currCase"})
> public abstract PartialForBean getForeachCase();
>
> @Component(id="linkToggle", type="tacos:AjaxDirectLink",
> bindings = {"listener=listener:toggleCase",
> "parameters=ognl:currCase.id",
> "updateComponents=ognl:'selectedCases', currCase.id",
>
> "effects=template:{highlight:{selectedCases:'[255,255,184], 500,
> 500','${currCase}':'[255,255,184], 500, 500'}}",
> "statusElement=literal:status"})
> public abstract AjaxDirectLink getLinkToggle();
>
>
> --
> ~chris
>
--
~chris
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]