RE: Iterating over collections with null values
I prefer (3) because it makes the loop behave in exactly the same way as it would in any other language. I don't like (2) at all because it removes information (the null values) that is likely to have been included in the collection for a reason. Also, if the iterate tag is ever extended to support ResultSets it is almost inevitably going to have to handle null values. -Original Message- From: Nick Pellow [mailto:[EMAIL PROTECTED]] Sent: 05 March 2001 03:50 To: [EMAIL PROTECTED] Subject: Re: Iterating over collections with null values "Craig R. McClanahan" wrote: Bugzilla bug report #706 reports that you will get a JSP page exception when you try to iterate over collection that contains null values. This is caused by the fact that the JSP page context refuses to allow null attributes. The bug report suggests one alternative (although the proposed implementation has problems), but I would like to solicit suggestions and thoughts on what the correct behavior should be. Here are the alternatives that I can think of: (1) No change -- document a restriction in the usage notes on the logic:iterate tag. (2) Silently skip this element of the iteration, with no notice to the surrounding page. The total number of times through the loop, from the perspective of the page, will be less than the size of the underlying collection. (3) Do not skip this element, but don't add it to the page context either. The page can then use logic:notPresent to test for whether the item is actually there or not. (4) Do not skip this element, but insert a reference to a dummy object instead of the null. This is likely to cause class cast exceptions, and is unlikely to be practical when the iteration explicitly includes a "type" attribute. (5) Other alternatives I have not thought of? (5) Add an attribute(s) on the iterate tag that allows the user to decide between (1), (2) and (3). Defaulting to (1). All of the listed alternatives have their problems, but I am currently leaning towards (1). Comments? Suggestions? Craig McClanahan
Re: Iterating over collections with null values
Nick Pellow wrote: "Craig R. McClanahan" wrote: Bugzilla bug report #706 reports that you will get a JSP page exception when you try to iterate over collection that contains null values. This is caused by the fact that the JSP page context refuses to allow null attributes. The bug report suggests one alternative (although the proposed implementation has problems), but I would like to solicit suggestions and thoughts on what the correct behavior should be. Here are the alternatives that I can think of: (1) No change -- document a restriction in the usage notes on the logic:iterate tag. (2) Silently skip this element of the iteration, with no notice to the surrounding page. The total number of times through the loop, from the perspective of the page, will be less than the size of the underlying collection. (3) Do not skip this element, but don't add it to the page context either. The page can then use logic:notPresent to test for whether the item is actually there or not. (4) Do not skip this element, but insert a reference to a dummy object instead of the null. This is likely to cause class cast exceptions, and is unlikely to be practical when the iteration explicitly includes a "type" attribute. (5) Add an attribute(s) on the iterate tag that allows the user to decide between (1), (2) and (3). Defaulting to (1). i like (5). it leaves me options. as a developer, i like options. i don't like being dictated to [by a framework tool]. :) i know it's more work for a committer, but... (4) is definitely out. e -- ___ Elod Horvath ('e') / ITFAIS Records (http://www.itfais.com/)
Re: Iterating over collections with null values
(1) This would be fine with me. Given that there seem to be as many opinions on this subject as people expressing them, perhaps this would be the expedient choice for 1.0. (2) I don't like this because of the disparity between the number of iterations and the size of the collection. The bean:size tag becomes somewhat less useful. (3) I believe this is the best of the "do something" options. It effectively documents the issue and provides a simple way of handling it. (4) This sounds like a pretty bad idea. :-} (5) I really don't like this. It makes me think of Perl's "There's More Than One Way To Do It" slogan. IMHO, having more options is not always better. -- Martin Cooper - Original Message - From: "Nick Pellow" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Sunday, March 04, 2001 7:50 PM Subject: Re: Iterating over collections with null values "Craig R. McClanahan" wrote: Bugzilla bug report #706 reports that you will get a JSP page exception when you try to iterate over collection that contains null values. This is caused by the fact that the JSP page context refuses to allow null attributes. The bug report suggests one alternative (although the proposed implementation has problems), but I would like to solicit suggestions and thoughts on what the correct behavior should be. Here are the alternatives that I can think of: (1) No change -- document a restriction in the usage notes on the logic:iterate tag. (2) Silently skip this element of the iteration, with no notice to the surrounding page. The total number of times through the loop, from the perspective of the page, will be less than the size of the underlying collection. (3) Do not skip this element, but don't add it to the page context either. The page can then use logic:notPresent to test for whether the item is actually there or not. (4) Do not skip this element, but insert a reference to a dummy object instead of the null. This is likely to cause class cast exceptions, and is unlikely to be practical when the iteration explicitly includes a "type" attribute. (5) Other alternatives I have not thought of? (5) Add an attribute(s) on the iterate tag that allows the user to decide between (1), (2) and (3). Defaulting to (1). All of the listed alternatives have their problems, but I am currently leaning towards (1). Comments? Suggestions? Craig McClanahan
Iterating over collections with null values
Bugzilla bug report #706 reports that you will get a JSP page exception when you try to iterate over collection that contains null values. This is caused by the fact that the JSP page context refuses to allow null attributes. The bug report suggests one alternative (although the proposed implementation has problems), but I would like to solicit suggestions and thoughts on what the correct behavior should be. Here are the alternatives that I can think of: (1) No change -- document a restriction in the usage notes on the logic:iterate tag. (2) Silently skip this element of the iteration, with no notice to the surrounding page. The total number of times through the loop, from the perspective of the page, will be less than the size of the underlying collection. (3) Do not skip this element, but don't add it to the page context either. The page can then use logic:notPresent to test for whether the item is actually there or not. (4) Do not skip this element, but insert a reference to a dummy object instead of the null. This is likely to cause class cast exceptions, and is unlikely to be practical when the iteration explicitly includes a "type" attribute. (5) Other alternatives I have not thought of? All of the listed alternatives have their problems, but I am currently leaning towards (1). Comments? Suggestions? Craig McClanahan
Re: Iterating over collections with null values
"Craig R. McClanahan" wrote: Bugzilla bug report #706 reports that you will get a JSP page exception when you try to iterate over collection that contains null values. This is caused by the fact that the JSP page context refuses to allow null attributes. The bug report suggests one alternative (although the proposed implementation has problems), but I would like to solicit suggestions and thoughts on what the correct behavior should be. Here are the alternatives that I can think of: (1) No change -- document a restriction in the usage notes on the logic:iterate tag. (2) Silently skip this element of the iteration, with no notice to the surrounding page. The total number of times through the loop, from the perspective of the page, will be less than the size of the underlying collection. (3) Do not skip this element, but don't add it to the page context either. The page can then use logic:notPresent to test for whether the item is actually there or not. (4) Do not skip this element, but insert a reference to a dummy object instead of the null. This is likely to cause class cast exceptions, and is unlikely to be practical when the iteration explicitly includes a "type" attribute. (5) Other alternatives I have not thought of? (5) Add an attribute(s) on the iterate tag that allows the user to decide between (1), (2) and (3). Defaulting to (1). All of the listed alternatives have their problems, but I am currently leaning towards (1). Comments? Suggestions? Craig McClanahan