Also you can control the display blocks using the data-type on the bean
model, if you need something special.

-- 
Chris

On Tue, Jun 28, 2016 at 3:30 PM, Chris Poulsen <mailingl...@nesluop.dk>
wrote:

> You can use a bean model for variable number of columns, that one also
> gives you full control over conduits etc.
>
> Inject BeanModelSource and create a display model for your data source,
> use .include (or similar) to whitelist the desired attributes in the
> generated model and model.add to get your synthetic columns defined.
>
> --
> Chris
>
> On Tue, Jun 28, 2016 at 3:13 PM, Davide Vecchi <d...@amc.dk> wrote:
>
>> Thanks for the answers, it's becoming more clear.
>>
>> The possibility suggested by Kalle makes sense, however I made some test
>> about it and I don't think it's the cause of my problem. This grid column
>> was being sorted without exceptions with Java 7 + Tapestry 5.3.7, plus I
>> checked and none of the values in the column is null. I have also tested
>> calling Arrays.sort with some null elements and it throws a null pointer
>> both with Java 7 and Java 8.
>> My problem has most probably to do with the fact that that column is not
>> part of the grid data source, as Cezary suggested, and it was so also when
>> we were using Java 7.
>>
>> About Cezary's hypothesis, I think my problem is definitely in that area,
>> but there is probably also something going on related to the different
>> Tapestry version because the column was defined in the same way when using
>> 5.3.7 and in that case there was no exception.
>>
>> The column is defined like this:
>>
>> - In the page template, one param of the grid tag is
>>
>>         t:add="prop:gridAdd"
>>
>> - In the page Java code, there is the corresponding
>>
>>         public String getGridAdd() {
>>                 return " myColumn1, myColumn2, myColumn3, myColumn4";
>>         }
>>
>>   where let's say that "myColumn3" is the column whose sorting fails.
>>
>> - In the page template, within the t:grid tag there is the definition of
>> the customized content of that column:
>>
>>         <p: myColumn3Cell>${ myColumn3}</p: myColumn3Cell>
>>
>> - In the page Java code, there is the method returning the value for that
>> column:
>>
>>         public String getMyColumn3()
>>         {
>>                 return aStringThatIsNeverNull;
>>         }
>>
>> So I'm trying to find out if this way of defining my column is not right
>> in 5.3.8 although it was not failing in 5.3.7, in order to rectify it.
>>
>>
>> -----Original Message-----
>> From: Cezary Biernacki [mailto:cezary...@gmail.com]
>> Sent: Monday, June 27, 2016 18:10
>> To: Tapestry users <users@tapestry.apache.org>
>> Subject: Re: Null pointer on sort with 5.3.8 that didn't occur with 5.3.7
>>
>> Your stack trace seems to indicate that conduit (a mechanism connecting
>> Tapestry with a column) is not available. It can happen if the column is
>> manually added to the model. Was the column sortable with Tapestry  5.3.7?
>> How is this column defined?
>>
>> Best regards,
>> Cezary
>>
>>
>> On Mon, Jun 27, 2016 at 4:43 PM, Davide Vecchi <d...@amc.dk> wrote:
>>
>> > Hi everybody
>> >
>> > For now I cannot post code to reproduce this problem because it only
>> > occurs with one columns of a specific grid from a big application and
>> > so far I wasn't able to extract the code to reproduce the error into a
>> > runnable example. But after posting this I will keep trying and if I
>> > manage I will post that.
>> >
>> > We migrated this web application from Java 1.7 + Tapestry 5.3.7 to
>> > Java
>> > 1.8 with Tapestry 5.3.8 .
>> >
>> > Clicking on the column header of this column - which contains String
>> > values - causes the exception below.
>> >
>> > While I'm investigating this error I was wondering if someone is aware
>> > of differences in the grid sorting of Tapestry 5.3.8 that might cause
>> > it to throw a null-pointer where Tapestry 5.3.7 wouldn't (and maybe
>> > should; it's likely that there is a mistake of mine that was somehow
>> > being "forgiven" by 5.3.7).
>> >
>> > Stacktrace:
>> >
>> > java.lang.NullPointerException
>> > ?
>> > org.apache.tapestry5.internal.grid.CollectionGridDataSource$2.compare(
>> > CollectionGridDataSource.java:78)
>> > ?
>> > org.apache.tapestry5.internal.grid.CollectionGridDataSource$3.compare(
>> > CollectionGridDataSource.java:91) ?
>> > java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
>> > ?  java.util.TimSort.sort(TimSort.java:234)
>> > ?  java.util.Arrays.sort(Arrays.java:1512)
>> > ?  java.util.ArrayList.sort(ArrayList.java:1454)
>> > ?  java.util.Collections.sort(Collections.java:175)
>> > ?
>> > org.apache.tapestry5.internal.grid.CollectionGridDataSource.prepare(Co
>> > llectionGridDataSource.java:97)
>> > ?
>> > my.package.gui.tapestry.components.AMCGridEmbedded$CachingDataSource.p
>> > repare(AMCGridEmbedded.java:853)
>> > ?
>> > my.package.gui.tapestry.components.AMCGridEmbedded.setupDataSource(AMC
>> > GridEmbedded.java:1174)
>> > ?
>> > my.package.gui.tapestry.components.AMCGridEmbedded.setupRender(AMCGrid
>> > Embedded.java:655)
>> > ?
>> > my.package.gui.tapestry.components.AMCGridEmbedded.advised$setupRender
>> > _1a14d3f8fd924(AMCGridEmbedded.java)
>> > ?
>> > my.package.gui.tapestry.components.AMCGridEmbedded$Invocation_setupRen
>> > der_1a14d3f8fd923.proceedToAdvisedMethod(Unknown
>> > Source)
>> > ?
>> >
>> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
>> > ?  ....
>> > ?  ....
>> >
>> >
>>
>
>

Reply via email to