Summary: | Unstandard <size>-Tag doesn't accept arrays | ||
---|---|---|---|
Product: | Taglibs | Reporter: | Oleksiy Drugobytskyy <o.dr> |
Component: | Sandbox Taglibs | Assignee: | Tomcat Developers Mailing List <dev> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | All | ||
OS: | All | ||
Attachments: | Sample jsp with <size>-Tag |
Description
Oleksiy Drugobytskyy
2008-07-18 06:07:49 UTC
Created attachment 22282 [details]
Sample jsp with <size>-Tag
svn ci -m "Fixing bugzilla entry 45433. SizeTag doesn't accept arrays" Sending src/main/java/org/apache/taglibs/unstandard/SizeTag.java Transmitting file data . Committed revision 778359. Index: src/main/java/org/apache/taglibs/unstandard/SizeTag.java =================================================================== --- src/main/java/org/apache/taglibs/unstandard/SizeTag.java (revision 775710) +++ src/main/java/org/apache/taglibs/unstandard/SizeTag.java (working copy) @@ -75,8 +75,15 @@ if(target instanceof String) { result = ( (String)target ).length(); } else - if(target instanceof Collection) { - result = ( (Object[])target ).length; + if(target.getClass().isArray()) { + try { + Field lengthField = target.getClass().getField("length"); + result = lengthField.getInt(target); + } catch(NoSuchFieldException nsfe) { + throw new JspException("Array found without a length field", nsfe); + } catch(IllegalAccessException iae) { + throw new JspException("Array found with a non-accessible length field", iae); + } } } if(var == null && result != -1) { |