Hi,
I tried to take your approach and did this in my java class:

package com.mycompany.ui.web.action.securepages.rep;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.tacos.ajax.components.grid.GridColumn;
import net.sf.tacos.ajax.components.grid.GridColumnModel;

import org.acegisecurity.annotation.Secured;
import org.apache.tapestry.IDirect;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.annotations.Bean;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.annotations.InjectState;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.engine.DirectServiceParameter;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.form.IPropertySelectionModel;
import org.apache.tapestry.form.StringPropertySelectionModel;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.valid.ValidationDelegate;

import com.mycompany.business.dtos.RepDocumentSearchDTO;
import com.mycompany.business.model.AppUser;
import com.mycompany.business.model.Rep;
import com.mycompany.business.service.appuser.AppUserService;
import com.mycompany.business.service.rep.RepService;
import com.mycompany.business.util.StringUtils;
import com.mycompany.ui.web.action.SessionUserInfo;

@Secured({"ROLE_REP_ADMIN", "ROLE_REP"})
public abstract class RepDocumentPage extends BasePage implements
PageBeginRenderListener {
        
        /* CONSTANTS */
        public static final DateFormat DATE_FORMAT =
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG);
//      private static Logger log =
LoggerFactory.getLogger(RepDocumentPage.class);
        
        /* INJECTED OBJECTS */
        @InjectState("sessionuserinfo")
        public abstract SessionUserInfo getSessionUserInfo();

        @InjectObject("spring:repService")
        public abstract RepService getRepService();
        
        @InjectObject("spring:appUserService")
        public abstract AppUserService getAppUserService();
        
        @InjectObject("engine-service:direct")
        public abstract IEngineService getDirectService();
        
        @Bean
        public abstract ValidationDelegate getDelegate();
        
        /* ABSTRACT METHODS */
        @Persist("client")
        public abstract boolean getIsSearchSelected();
        public abstract void setIsSearchSelected(boolean b);
        @Persist("client")
        public abstract boolean getIsSearchButtonClicked();
        public abstract void setIsSearchButtonClicked(boolean b);
        @Persist("client")
        public abstract boolean getIsSearchResultSelected();
        public abstract void setIsSearchResultSelected(boolean b);
        
        public abstract RepDocumentSearchDTO getRepDocumentSearchDTO();
        public abstract void setRepDocumentSearchDTO(RepDocumentSearchDTO o);
        
        /* PAGE BEGIN RENDER */
        public void pageBeginRender(PageEvent event) {
                RepDocumentSearchDTO repDoc = new RepDocumentSearchDTO();
                setRepDocumentSearchDTO(repDoc);
        }
        
        public String getCurrentTopBarName() {
                return getSessionUserInfo().getRepSite().getCompanyName() + "-"+
TOP_BAR_NAME;
        }
        
        public IPropertySelectionModel getRepNumSelectModel() {
                AppUser appUser =
getAppUserService().getUserByPrimaryKey(getSessionUserInfo().getUserName());
                Rep rep = getRepService().getRepByRepNum(appUser.getRepNum());
                
                /// TODO : change to get list of visible reps and rep first 
name and last
name
                List<Rep> visibleRepList =
getRepService().getRepByProdGroup(rep.getProdGroup());
                String[] visibleRepSelectArray = null;
                if (visibleRepList != null && visibleRepList.size() > 0) {
                        visibleRepSelectArray = new 
String[visibleRepList.size() + 1];
                        visibleRepSelectArray[0] = 
RepDocumentSearchDTO.SELECT_REP_NUM;
                        int i = 1;
                        for (Rep repElement :visibleRepList) {
                                visibleRepSelectArray[i] = 
repElement.getRepNum();
                                i++;
                        }
                }
                return new StringPropertySelectionModel(visibleRepSelectArray);
        }       
        
        public IPropertySelectionModel getFileTypeSelectModel() {       
                String[] fileTypeSelectArray = new String[3];
                fileTypeSelectArray[0] = RepDocumentSearchDTO.SELECT_FILE_TYPE;
                fileTypeSelectArray[1] = "Image";
                fileTypeSelectArray[2] = "PDF";
                return new StringPropertySelectionModel(fileTypeSelectArray);
        }
        
        public IPropertySelectionModel getAccountTypeSelectModel() {    
                
                //TODO : get the accounts from the db...
                
                String[] accountTypeSelectArray = new String[3];
                accountTypeSelectArray[0] = 
RepDocumentSearchDTO.SELECT_ACCOUNT_NUM;
                accountTypeSelectArray[1] = "IC12345";
                accountTypeSelectArray[2] = "IC23445";
                return new StringPropertySelectionModel(accountTypeSelectArray);
        }
        
         public GridColumnModel getGridColumns() { // columns
                return new GridColumnModel(Arrays.asList(new GridColumn[] {
                                new GridColumn("firstNameLastName", "Name", new 
Integer(600),
                                                true, false, 
GridColumn.STRING_TYPE, "textClass",
                                                "bottom", "center", 
"textClass", false),
                                new GridColumn("ssn", "SSN", new Integer(300), 
true, false,
                                                GridColumn.STRING_TYPE, 
"textClass", "bottom",
                                                "center", "textClass", false),
                                new GridColumn("accountType", "Account Type", 
new Integer(300),
                                                true, false, 
GridColumn.STRING_TYPE, "textClass",
                                                "bottom", "center", 
"textClass", false),
                                new GridColumn("fileType", "File Type", new 
Integer(300), true,
                                                false, GridColumn.STRING_TYPE, 
"textClass", "bottom",
                                                "center", "textClass", false),
                                new GridColumn("dateCreated", "Date Created", 
new Integer(300),
                                                true, false, 
GridColumn.DATE_TYPE, "%Y/%m/%d",
                                                "bottom", "center", 
"dateClass", false),
                                new GridColumn("dateChanged", "Date Changed", 
new Integer(300),
                                                true, false, 
GridColumn.DATE_TYPE, "%Y/%m/%d",
                                                "bottom", "center", 
"dateClass", false),
                                new GridColumn("customerId", "Customer Id", new 
Integer(150),
                                                true, false, 
GridColumn.NUMBER_TYPE, null, null, null,
                                                "numberClass", true),
                                new GridColumn("repNum", "Rep Number", new 
Integer(300), true,
                                                false, GridColumn.STRING_TYPE, 
"textClass", "bottom",
                                                "center", "textClass", true),
                                new GridColumn("edit", "Edit", new 
Integer(300), true, false,
                                                GridColumn.HTML_TYPE, 
"textClass", "bottom", "center",
                                                "textClass", false) }));
        }

        /*
         * name, displayName, width, sortable, caseSensistive, dataType, 
formatter,
         * valign, align, css, hidden, totalJSfunction
         */

        public Object getGridData() {
                List<Object> results = new ArrayList<Object>();
                DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", 
getLocale());
                IDirect directLinkComponent = (IDirect) 
getComponent("editSearchResult");               
                
                for (int i = 0; i < 100; i++) {
                        Map<Object, Object> map = new HashMap<Object, Object>();
                        map.put("firstNameLastName", "FirstName" + i + " 
LastName" + i);
                        map.put("ssn", new Integer(i * 100000));
                        map.put("accountType", "accountType" + i);
                        map.put("fileType", "fileType" + i);
                        Calendar cal = Calendar.getInstance();
                        cal.add(Calendar.DATE, i);
                        map.put("dateCreated", 
dateFormat.format(cal.getTime()));
                        map.put("dateChanged", 
dateFormat.format(cal.getTime()));
                        map.put("customerId", new Integer(i * 10));
                        map.put("repNum", "repNum" + i);
                        
                        DirectServiceParameter dsp = new
DirectServiceParameter(directLinkComponent, new Object[]{
                                        i, "FirstName" + i + " LastName" + i});
                        
                        // The a href starts with a <  but if i put that
there it will only display the Edit link in this posting on the forum. The
same for the closing tag
                        map.put("edit", "a href=\"" + 
getDirectService().getLink(false,
dsp).getURL() + "\">Edit/a>");
                        results.add(map);
                }
                return results;
        }

        public boolean getInitSortOrder() {
                return true;
        }

        public String getInitSortColumn() {
                return "firstNameLastName";
        }

        public Map<String, Object> getTotalRow() {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("firstNameLastName", null);
                map.put("ssn", null);
                map.put("accountType", null);
                map.put("fileType", null);
                map.put("dateCreated", null);
                map.put("dateChanged", null);
                map.put("customerId", null);
                map.put("repNum", null);
                return map;
        }

        public String getInfo() {
                return "This is an informative string that can be generated on 
the fly";
        }
        
        public void onSearchForm(IRequestCycle cycle){
                if (getIsSearchSelected()) {
                        setIsSearchSelected(false);
                } else {
                        setIsSearchSelected(true);
                }
        }
        
        public void onClearSearchForm(IRequestCycle cycle) {
                setRepDocumentSearchDTO(new RepDocumentSearchDTO());
                setIsSearchResultSelected(false);
                setIsSearchButtonClicked(false);
        }
        
        public void onSearchResult(IRequestCycle cycle) {
                if (getIsSearchResultSelected()) {
                        setIsSearchResultSelected(false);
                } else {
                        setIsSearchResultSelected(true);
                }
        }
        
        public String onSearch(IRequestCycle cycle) {
                ValidationDelegate delegate = getDelegate();
                if (!getRepDocumentSearchDTO().isHavingSearchParametersSet()) {
                        /* No field set for searching. Set error message */
                        delegate.setFormComponent(null);
                        delegate.record("No search parameters set. You must 
input at least 1
search parameter!", null);
                } else {
                        setIsSearchButtonClicked(true);
                        setIsSearchResultSelected(true);
                }
                return null;
        }
        
        public IPage onEditSearchResult(IRequestCycle cycle, int id, String 
name) {     
                
                System.out.println("Inside listener onEditSearchResult()");
                System.out.println("id = " + id);
                System.out.println("name = " + name);

                return null;
        }
        
}

And I get this exception:

11:09:35,171 ERROR [AjaxDirectServiceImpl] Error rendering Ajax Response:
org.apache.tapestry.BindingException: Unable to read OGNL expression
'<parsed OGNL expression>' of [EMAIL PROTECTED]
5efe34[RepDocumentPage]: gridData
[context:/html/secure/rep/RepDocumentPage.page, line 24, column 55]
        at
org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:114)
        at
org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:103)
        at
org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:87)
        at $Grid_33.getSource($Grid_33.java)
        at
net.sf.tacos.ajax.components.grid.Grid.writeTableData(Grid.java:381)
        at net.sf.tacos.ajax.components.grid.Grid.writeTable(Grid.java:234)
        at
net.sf.tacos.ajax.components.grid.Grid.renderComponent(Grid.java:184)
        at $Grid_33.renderComponent($Grid_33.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at
org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:86)
        at $IfBean_11.renderComponent($IfBean_11.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:48)
        at $Any_19.renderComponent($Any_19.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at
org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:86)
        at $IfBean_11.renderComponent($IfBean_11.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:48)
        at $Any_19.renderComponent($Any_19.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:48)
        at $Any_19.renderComponent($Any_19.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at org.apache.tapestry.html.Body.renderComponent(Body.java:129)
        at $Body_30.renderComponent($Body_30.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
        at org.apache.tapestry.html.Shell.renderComponent(Shell.java:115)
        at $Shell_34.renderComponent($Shell_34.java)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92)
        at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
        at
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:275)
        at
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:366)
        at
net.sf.tacos.ajax.contrib.DojoResponseBuilder.renderResponse(DojoResponseBuilder.java:192)
        at
net.sf.tacos.ajax.impl.AjaxDirectServiceImpl.renderAjaxResponse(AjaxDirectServiceImpl.java:361)
        at
net.sf.tacos.ajax.impl.AjaxDirectServiceImpl.service(AjaxDirectServiceImpl.java:275)
        at
$AjaxDirectService_1124d56688d.service($AjaxDirectService_1124d56688d.java)
        at
org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
        at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
        at
org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
        at
$WebRequestServicer_1124d566873.service($WebRequestServicer_1124d566873.java)
        at
$WebRequestServicer_1124d56686d.service($WebRequestServicer_1124d56686d.java)
        at
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.j
ava:56)
        at
$ServletRequestServicer_1124d56684f.service($ServletRequestServicer_1124d56684f.java)
        at
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
        at
$ServletRequestServicerFilter_1124d56684b.service($ServletRequestServicerFilter_1124d56684b.java)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
com.javaforge.tapestry.acegi.filter.FilterChainAdapter.doFilter(FilterChainAdapter.java:43)
        at
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at $Filter_1124d566849.doFilter($Filter_1124d566849.java)
        at
com.javaforge.tapestry.acegi.filter.ServletRequestServicerFilterAdapter.service(ServletRequestServicerFilterA
dapter.java:42)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
com.javaforge.tapestry.acegi.filter.FilterChainAdapter.doFilter(FilterChainAdapter.java:43)
        at
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
        at
$FormProcessor_1124d566847.doFilter($FormProcessor_1124d566847.java)
        at
com.javaforge.tapestry.acegi.filter.ServletRequestServicerFilterAdapter.service(ServletRequestServicerFilterA
dapter.java:42)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
        at
$ServletRequestServicerFilter_1124d56683f.service($ServletRequestServicerFilter_1124d56683f.java)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
        at
$ServletRequestServicerFilter_1124d56684d.service($ServletRequestServicerFilter_1124d56684d.java)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
com.javaforge.tapestry.acegi.filter.FilterChainAdapter.doFilter(FilterChainAdapter.java:43)
        at
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.ja
va:229)
        at $Filter_1124d566841.doFilter($Filter_1124d566841.java)
        at
com.javaforge.tapestry.acegi.filter.ServletRequestServicerFilterAdapter.service(ServletRequestServicerFilterA
dapter.java:42)
        at
$ServletRequestServicer_1124d566851.service($ServletRequestServicer_1124d566851.java)
        at
$ServletRequestServicer_1124d566839.service($ServletRequestServicer_1124d566839.java)
        at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
        at
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:168)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
        at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:664)
        at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to read
OGNL expression '<parsed OGNL expression>' of
 [EMAIL PROTECTED]: gridData
[context:/html/secure/rep/RepDocumentPage.page, line 5, column 9
1]
        at
org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:95)
        at
$ExpressionEvaluator_1124d56690d.readCompiled($ExpressionEvaluator_1124d56690d.java)
        at
org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:110)
        ... 99 more
Caused by: ognl.OgnlException: gridData
[org.apache.hivemind.ApplicationRuntimeException: Component
$RepDocumentPage_31@
15efe34[RepDocumentPage] does not contain a component editSearchResult.
[context:/html/secure/rep/RepDocumentPage.page,
line 5, column 91]]
        at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:908)
        at
ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:54)
        at
ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
        at ognl.SimpleNode.getValue(SimpleNode.java:210)
        at ognl.Ognl.getValue(Ognl.java:333)
        at ognl.Ognl.getValue(Ognl.java:310)
        at
org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:91)
        ... 101 more

Anyone have any Ideer on how to solve this?
Thanks in advance,
Jacob
-- 
View this message in context: 
http://www.nabble.com/Tacos-Grid-Component-question-tf3676754.html#a10287105
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to