Based on the fact that your keys are of type String and the error message is complaining that you are trying to get the "value" attribute of a String, my guess is that the outer c:for-Each element is returning the keys of the Map one at a time.
If I'm right, then the EL expression for the key (String) would be
and the EL expression for the value (List<Integer>) would be
Tag files are great "replacement" for the JSP 1.x include action. Rather than using params, or implicitly using scoped variables that tightly bind the parent and child files, tag files are easy to write (no Java) and explicitly define parameters. This allows for much cleaner and clearer code, and loose binding of the components.
can I then use the various JSTL/EL constructs to work with that object inside the tag file, iterating through whatever Lists or other stuff it may contain? I'm having a hard time understanding what is and is not allowed in tag files.
Yes, indeed you can. I just tried it myself earlier this week and it works fine. Once you declare the type of the attribute, as you did there. If you don't declare the type then it doesn't work quite as fine.
Can i declare a tag file attribute of a primitive type, like long or float? (I don't see how, as they aren't in a package.) Or should I just go back to my classes and make those properties Wrapper types? Thank you.