Re: Rendering cache

2012-07-30 Thread dh ning
Hi, one of my simple implementation, hope it helps.


public abstract class StaticCacheComponent {

private final static int CACHE_EXPIRED = 60;

@Inject
private ComponentResources componentResources;

@Inject
private CacheService cacheService;

@Inject
private TypeCoercer typeCoercer;

private Element fakeElement = null;

private String cacheId = null;

final boolean beginRender(MarkupWriter writer) {
InternalComponentResourcesImpl resourcesImpl =
(InternalComponentResourcesImpl)componentResources;
StringBuilder builder = new
StringBuilder(this.getClass().getSimpleName());
for (String parameterName :
resourcesImpl.getComponentModel().getParameterNames()) {
boolean isBound = resourcesImpl.isBound(parameterName);
String parameterValueStr = null;
if (isBound) {
parameterValueStr =
typeCoercer.coerce(resourcesImpl.getBinding(parameterName).get(),
String.class);
}

builder.append(parameterName).append(_).append(parameterValueStr).append(_);
}
cacheId = builder.toString();
String staticCache = cacheService.getCache(cacheId,
getCacheExpired());
if (staticCache != null) {
writer.writeRaw(staticCache);
return false;
} else {
fakeElement = writer.element(span);
return true;
}
}

final void afterRenderTemplate(MarkupWriter writer) {
writer.end();
// must call before removing
String innerHTMl = fakeElement.getChildMarkup();
fakeElement.remove();
writer.writeRaw(innerHTMl);
cacheService.saveCache(cacheId, getCacheExpired(), innerHTMl);
}

protected int getCacheExpired() {
return CACHE_EXPIRED;
}
}

2012/7/28 Jens Breitenstein mailingl...@j-b-s.de

 Hi T5'ers

 we have some performance issues and started thinking about caching our
 pages (lets say parts of them to be precise). Due to the fact we are
 showing user related information along with public information on a page,
 we can not make use of a simple web proxy caching.

 Therefore we are thinking about a component rendering result cache.

 Assume we have several independent components to show an overview of items
 (and we have a lot of items rendered in a loop) and we want to cache the
 rendering result of one of these particular components for several seconds
 before rendering it again (to reflect new items or changes). I am aware
 this means we are showing stale data for some seconds, but honestly this is
 not an issue because after rendering and displaying it in the browser data
 is considerably old anyway :-)

 What might be a good place to intercept the rendering and store the output
 from a component and on the other hand use outputraw for sending cached
 data?
 Does anyone tried this before?

 Any idea or comment is appreciated, thanks in advance


 Jens




 --**--**-
 To unsubscribe, e-mail: 
 users-unsubscribe@tapestry.**apache.orgusers-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




Re: Howto render a block and put it into a JSON reply?

2012-02-16 Thread dh ning
Hi,

To render block as html markup, I did like this:

public String renderMarkup(RenderCommand renderCommand) {
MarkupWriter markupWriter = new MarkupWriterImpl();

// validation track
ValidationDecorator decorator = new
DefaultValidationDecorator(environment,
assetSource.getExpandedAsset(${tapestry.spacer-image}), markupWriter);
environment.push(ValidationDecorator.class, decorator);
RenderQueueImpl renderQueue = new RenderQueueImpl(logger);
renderQueue.push(renderCommand);
renderQueue.run(markupWriter);

environment.pop(ValidationDecorator.class);
return markupWriter.toString().replaceAll(^\\n+,
).replaceAll(\\n+$, );
}

and call renderMarkup((RenderCommand )block).

Not sure whether it is better than yours, hope it helps.

2012/2/16 Christian Riedel cr.ml...@googlemail.com

 Hi there,

 I'm trying to improve the tapestry5-jquery DataTable component, which is
 able to respond paged results in JSON. Unfortunately the component is a bit
 limited in terms of what can be returned. I want to add support for the
 Grid-style p:propertyCell block-parameter-notation.
 I'm looking for the most elegant way to do it. Currently I'm trying it
 with faked zone updates (ajaxResponseRenderer.addRender) and a filter
 (ajaxResponseRenderer.addFilter) that should modify the JSON reply object.
 It feels very clumsy and I thought if someone on the list could point me to
 a more elegant solution.

 More Abstract:
 We've got
 - an Ajax callback: void onData() { ... }
 - PropertyOverrides, having block parameters
 - a working data source that is able to fetch data by the current page

 We need
 - loop over all rows of the current page and
 - render each cell's content or its override into a row-json-array and
 - put each row-json-array into a data json-array

 Is there another way than using ajaxResponseRenderer.addRender / addFilter?

 Cheers
 Christian
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




Re: T5.1 locale switch back to default english after navigate to other page

2011-11-17 Thread dh ning
Hi,

If you switch locale by PersistentLocale service, I think the locale will
be persisted.

Thanks,
DH

2011/11/18 wesleywj2 wesley...@yahoo.co.uk

 hi there,

 i successfully switch the locale between english and chinese zh_CN within
 a page, but encountered a problem where once i switch to chinese and
 navigate to other pages with actionlink,submit etc, the other page switched
 back to default english. how do i keep the locale persisted for all pages
 after locale switching?

 please advice,
 wesleywj2

 --
 View this message in context:
 http://tapestry.1045711.n5.nabble.com/T5-1-locale-switch-back-to-default-english-after-navigate-to-other-page-tp5002303p5002303.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




Re: [ANNOUNCE] Apache Tapestry preview 5.3-rc-1

2011-11-01 Thread dh ning
Me too where tml contains Chinese words.

Should be caused by the html5 doc type changes?

Caused by: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8
sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanLiteral(Unknown
Source)
at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown
Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown
Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at
org.apache.tapestry5.internal.services.XMLTokenStream.parse(XMLTokenStream.java:306)
at
org.apache.tapestry5.internal.services.SaxTemplateParser.parse(SaxTemplateParser.java:163)


2011/11/1 Donyee xyw888...@gmail.com

 Both rc-1 and rc-2, I got this  Invalid byte 1 of 1-byte UTF-8 sequence.
 but works fine with beta-26
 is there any new changes??



 2011/11/1 Howard Lewis Ship hls...@gmail.com

  Uh, yes. It's been a trying afternoon.
 
  On Mon, Oct 31, 2011 at 3:26 PM, Muhammad Gelbana m.gelb...@gmail.com
  wrote:
   You mean 5.3-rc-2 I suppose.
  
   On Mon, Oct 31, 2011 at 11:32 PM, Howard Lewis Ship hls...@gmail.com
  wrote:
  
   FYI: I found a minor problem in Tapestry 5.2-rc-1 and am
   building/uploading Tapestry 5.2-rc-2 right now.
  
   On Mon, Oct 31, 2011 at 11:05 AM, Howard Lewis Ship hls...@gmail.com
 
   wrote:
We are very pleased to announce the first release candidate preview
 of
Tapestry 5.3.
   
Tapestry 5.3 is significantly faster than Tapestry 5.2, and is more
memory efficient ... a long with tons of significant new features,
improvements, and bug fixes.
   
Details here:
  
  http://tapestry.apache.org/2011/10/31/tapestry-53-release-candidate.html
   
This is still a preview release, but we encourage the Tapestry
community to upgrade to this release. With positive feedback (and no
show-stopping negative feedback) we should progress to a final
 release
of 5.3 in a few weeks.
   
For most users, the upgrade path is simply changing the version
number, and performing a clean compile.
   
Note that with each new release, we get a slew of panicked messages
that Tapestry is broken in bizarre ways. These ALMOST ALWAYS turn
 out
to be prior-release JARs still on the classpath, either in the
developer's working directory, or in a servlet container deployment
directory. Please carefully clean up your environment as part of the
upgrade!
   
There are some cases where Tapestry 5.3 performs more rigorous
 checks
than Tapestry 5.2; for example, 5.3 ensures that event handler
 methods
that reference a component id (onSuccessFromLogin) correspond to
 an
actual component (login); in Tapestry 5.2, this was not checked
 for,
and the event handler method would never fire ... it likely has a
 typo
in its name, or is related to a component that was removed from the
template.  This particular check can be disabled:
   
  
 
 http://tapestry.apache.org/configuration.html#Configuration-tapestry.compatibility.unknowncomponentidcheck
  .
   ..
   
It would be wise to start up your application under 5.3, then use
 the
new PageCatalog page (http://localhost:8080/pagecatalog) and click
  the
load all link, to force all pages to be loaded. This will quickly
identify any coding problems in your application.
   
--
Howard M. Lewis Ship
   
Creator of Apache Tapestry
   
The source for Tapestry training, mentoring and support. Contact me
 to
learn how I can get you up and productive in Tapestry fast!
   
(971) 678-5210
http://howardlewisship.com
   
  
  
  
   --
   Howard M. Lewis Ship
  
   Creator of Apache Tapestry
  
   The source for Tapestry training, mentoring and support. Contact me to
   learn how I can get you up and productive in Tapestry fast!
  
   (971) 678-5210
   http://howardlewisship.com
  
   -
   To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
   For additional commands, e-mail: users-h...@tapestry.apache.org
  
  
  
  
   --
   *Regards,*
   *Muhammad Gelbana
   Java Developer*
  
 
 
 
  --
  Howard M. Lewis Ship
 
  Creator of 

Re: [ANNOUNCE] Apache Tapestry preview 5.3-rc-1

2011-11-01 Thread dh ning
A pleasure! Done.

https://issues.apache.org/jira/browse/TAP5-1741

Thanks,
DH

2011/11/1 Howard Lewis Ship hls...@gmail.com

 It is possible, can you open up a JIRA issue and attach your template?

 On Tue, Nov 1, 2011 at 3:01 AM, dh ning ningd...@gmail.com wrote:
  Me too where tml contains Chinese words.
 
  Should be caused by the html5 doc type changes?
 
  Caused by: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8
  sequence.
 at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown
 Source)
 at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
 at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
 at org.apache.xerces.impl.XMLEntityScanner.scanLiteral(Unknown
  Source)
 at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown
  Source)
 at
  org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown
  Source)
 at
  org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
  Source)
 at
 
 org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
  Source)
 at
 
 org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
  Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
  Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
  Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
 Source)
 at
 
 org.apache.tapestry5.internal.services.XMLTokenStream.parse(XMLTokenStream.java:306)
 at
 
 org.apache.tapestry5.internal.services.SaxTemplateParser.parse(SaxTemplateParser.java:163)
 
 
  2011/11/1 Donyee xyw888...@gmail.com
 
  Both rc-1 and rc-2, I got this  Invalid byte 1 of 1-byte UTF-8
 sequence.
  but works fine with beta-26
  is there any new changes??
 
 
 
  2011/11/1 Howard Lewis Ship hls...@gmail.com
 
   Uh, yes. It's been a trying afternoon.
  
   On Mon, Oct 31, 2011 at 3:26 PM, Muhammad Gelbana 
 m.gelb...@gmail.com
   wrote:
You mean 5.3-rc-2 I suppose.
   



T5: Critial security of t:formdata

2009-03-07 Thread dh ning
Hi,

These days I always think of security of t:formdata, just now I have a test
to hack the t:formdata and find there is some serious damages.

1. First I change source code of Form component and store a component action
in Form and build my own tapestry-core.jar.
static final ComponentActionForm TEST_ACTION = new
ComponentActionForm()
{
  private static final long serialVersionUID = 0L;

  public void execute(Form component)
{
for (int i = 0; i  1000; i++) {
 System.out.println(-run  + i);
}
}

@Override
public String toString()
{
return TEST_ACTION;
}
};

2. Jetty:run the application with my own jar and access one page
(/login) that contains form, then get the t:formdata from html source code.
3. Revert offical jar, and new a AbstractIntegrationTestSuite test case:
open(login);
type(t:formdata, copy the form data from 2nd);
clickAndWait(submit);

Test result: I can see -run 0 to -run 1000 loged.

So in my understanding, doesn't it mean that website based on tapestry5 is
not very secured and can be attacked by any experienced t5 programmer?

Thanks,
DH


Why Grid component fetches data one more time in form submit

2009-02-19 Thread dh ning
Hi,

When Grid is in a form, even though 'volatile' parameter is set to 'false'
(by default), I can see the datasource provider method is called during form
submit.
My understanding is that, if 'volatile' is false, it should not be called in
form submitted, am I missing something?

 Object setupRender()
{
if (formSupport != null) formSupport.store(this, SETUP_DATA_SOURCE);
...
}
From the source code of Grid.java, if Grid is in form, the SETUP_DATA_SOURCE
componentaction is always called after form submitted. I think 'volatile'
should be here to prevent it from calling during submit. Unfortunately
'volatile' parameter is now declared as publishParameters of GridRows
component.



How do you handle grid component in a form?

Thanks,
DH


stylesheet processing in ajax response doesn't work in firefox3.0

2009-02-12 Thread dh ning
Hi,

Environment: tapestry 5.0.18, firefox3.0, maven jetty:run

Whenever there is new stylesheet link in ajax response in firefox3.0 (both
3.0.53.0.6), then there is an ajax error shown in top of page Client
exception processing response: TypeError: existing is null.

But IE 67, firefox 2.0 work well.


Major code of test case like following:

Page.tml
a t:type=actionlink t:zone=abcZone t:id=link/
div t:type=zone t:id=abcZone
t:AjaxWindow/
/div

Page.java
@Component
private Zone abcZone;
public Object onActionFromLink() {
 return abcZone;
}

AjaxWindow.java
@IncludeStylesheet(value = {context:css/themes/default.css})
public class WindowPanel {
}

If I remove @IncludeStylesheet annotation, then it works well in firefox3.0
too.

Is it a known issue of firefox3.0 or tapestry.js code issue? Any workaround
for this?



Thanks,

DH


Re: [T5] 5.0.16 Spanish special characters

2008-12-03 Thread dh ning
That's true, native2ascii is unnecessarily any more.
Try to locate the issue whether it is caused at server side or by html page
encoding.
What's that value in tapestry page.java level? If it is correct, then this
should be the html encoding problem.
2008/12/4 Thiago H. de Paula Figueiredo [EMAIL PROTECTED]

 Em Wed, 03 Dec 2008 14:58:39 -0300, Imants Firsts [EMAIL PROTECTED]
 escreveu:

 Hi Ray!

 The properties files should be in ascii encoding and the unicode
 characters should be escaped with \u, for example \u0161 for scaron;
 character. JDK comes with native2ascii tool that does the conversion.


 That's not correct anymore. Since some Tapestry version I don't recall, the
 property files need to be UTF-8 encoded, so no conversion needs to be done.

 From http://tapestry.apache.org/tapestry5/guide/localization.html:

 Properties File Charset

 Tapestry uses the UTF-8 charset when reading the properties files in a
 message catalog. This means that you don't have to use the Java native2ascii
 tool.


 --
 Thiago H. de Paula Figueiredo
 Independent Java consultant, developer, and instructor
 Consultor, desenvolvedor e instrutor em Java
 http://www.arsmachina.com.br/thiago


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




Re: [T5] Page naigation using submit

2008-10-17 Thread dh ning
You don't want the component rely on page, but you do (rely on outer form,
right?), so if you want your component handle event independently, set the
form in the component is a must.

btw, onSelect's signature should only be Void type.

DH

2008/10/17 Ville Virtanen [EMAIL PROTECTED]


 Yep, that's exactly the case.

 The component can't rely on any code in the page, so solution number 1 is
 out of the question.

 Solution number 2 throws exception:
 Event 'selected' from FinancePlan:dynamicfromcont. received an event
 handler method return value of
 [EMAIL PROTECTED] This type of event does
 not
 support return values from event handler methods.

  - Ville


 dhning-2 wrote:
 
  From your  former mail, my understanding on your case (correct me if I am
  wrong): your page has a form, and the form contains your component, and
  your component template has multiple submit buttons (it must be submit
  component if you want to handle select event).
 
  I think there are two ways:
  1. Inside the page java, handle the onAction/onSuccess event. (You can
 not
  see the onSelect event here)
  2. Inside your component java, handle the onSelect event (I am not sure
  whether it is right, I haven't tried before)
 
  Thanks!
 
  DH
  - Original Message -
  From: Ville Virtanen [EMAIL PROTECTED]
  To: users@tapestry.apache.org
  Sent: Friday, October 17, 2008 8:08 PM
  Subject: Re: [T5] Page naigation using submit
 
 
 
  Yes it must be, otherwise it won't work.
 
  The submit event that is triggered by the form in the page does not
  bubble
  to my component and I can't use the selected event triggered by the
  button
  in my component because that event does not support return type of page
  class.
 
  - Ville
 
 
  dhning-2 wrote:
 
  But your component must be enclosed by an outer form component, right?
  Or
  else, how can you put textfield in your component?
 
  Thanks!
 
  DH
 
 
  - Original Message -
  From: Ville Virtanen [EMAIL PROTECTED]
  To: users@tapestry.apache.org
  Sent: Friday, October 17, 2008 7:01 PM
  Subject: [T5] Page naigation using submit
 
 
 
  Hi,
 
  This must be discussed before, but I could not find anything using
  search
  and I seem to be having total brain freeze here so:
 
  I have a case where I have to let user enter rows to a view and there
  must
  be an Edit function at the end of each of these rows. The edit
  functionality MUST SUBMIT before redirecting to detail edit as every
  row
  in
  the view are editable, and user may edit the rows, after which
  she/he/it
  clicks the edit button to edit the details of a row.
 
  So, how can I use submit to redirect to the detail page. As this is a
  component, I cannot do the normal onSuccess redirect, as my
 component
  does
  not define form and hence it doesn't receive the on submit event.
 
  I think it is pretty standard to have a button to redirect to another
  page
  after submit.
 
  Am I missing something totally obvious?
 
  - Ville
  --
  View this message in context:
 
 http://www.nabble.com/-T5--Page-naigation-using-submit-tp20031177p20031177.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]
 
 
 
 
  --
  View this message in context:
 
 http://www.nabble.com/-T5--Page-naigation-using-submit-tp20031177p20032020.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]
 
 
 

 --
 View this message in context:
 http://www.nabble.com/-T5--Page-naigation-using-submit-tp20031177p20032647.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]




An exception at jetty starts up while using classNameLocator

2008-08-15 Thread dh ning
Hi,

I got an exception when Jetty starts up after my maven repository updates to
the latest tapestry 5.0.15-snapshot(I haven't update my repository for
about 3 weeks), the latest 5.0.14-snapshot can't work too. The exception is:

[ERROR] ClassNameLocator Construction of service ClassNameLocator failed:
Error invoking constructor
org.apache.tapestry5.ioc.internal.services.ClassNameLocatorImpl(ClasspathURLConverter)
(at ClassNameLocatorImpl.java:61) (for service 'ClassNameLocator'):
Exception constructing service 'Alias': Construction of service 'Alias' has
failed due to recursion: the service depends on itself in some way. Please
check org.apache.tapestry5.services.TapestryModule.buildAlias(Logger,
String, AliasManager, Collection) (at TapestryModule.java:207) for
references to another service that is itself dependent on service 'Alias'.

I find the cause is the usage of ClassNameLocator in my AppModule.java. It
is very simple.

public class AppModule
{

public static void contributeTypeCoercer(
ConfigurationCoercionTuple configuration,
final ClassNameLocator classNameLocator) {
classNameLocator.locateClassNames(com.mycompany.entities);
 other codes
}
}

If I comment classNameLocator.locateClassNames(com.mycompany.entities),
then everything works and Jetty starts up.

Please help on solving the problem. It blocks me for several days. Thanks.


DH


Re: Problem wuth internacionalization

2008-05-12 Thread dh ning
Hi,

What's your tapestry version?
If is the latest version, you should not put the start.tml, start.properties
in WEB-INF. They should be in parent level of WEB-INF(src/main/webapp/) or
in /src/main/resources/com/igno/bookStore/pages/.
And for app.properties, it should be always in WEB-INF.

Thanks!

DH


2008/5/13, Igoor [EMAIL PROTECTED]:


 when i make files Start.properties and Start_de.properties and put them
 into
 WEB-INF, or when i make com.igor.bookStore.pages and put these files into
 this root my application doesen't work... But when I make files
 app.properties and app_de.properties into WEB-INF whit same content like
 Start.properties and Start_de.properties my application work. What i need
 to
 do in order to make my application work with Start.properties and
 Start_de.properties
 --
 View this message in context:
 http://www.nabble.com/Problem-wuth-internacionalization-tp17190006p17190006.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]




Is it possible to prevent the render method in parent component from being invoked?

2008-04-23 Thread dh ning
Hi,

First I know it is a feature that parent method is prior to child's.

I need to extend GridPager component because the action link in GridPager
doesn't have a context parameter,
so the context info of the link is very limited(only the page No.). And I
don't like to persist context in session.

The case is that in a user list page with search function and Grid
component, user input keyword username,
role and so on, and then click 'search' button, the relevant result will be
shown in a Grid's page 1,
but when  user clicks page 2, the search keyword is missing, then the result
is wrong which is not expected.

So I extend GridPager to provide context to actionlink,
but because it (as parent) implements a method beginRender() which is always
invoked by Tapestry5 ahead of my GridPager's beginRender(),
so now there would be two pager generated in list page.

So is there a way to prevent the render method in parent from being invoked?
And how?

And what's the best practice here dealing with search funcion with Grid?
Anyone please share your experience.

Thanks in advance.

DH