java - Weird exception while using contains() method -
java - Weird exception while using contains() method -
i'm building web application using spring mvc framework.
i have controller adds attributes (users belonging same team) view, follows:
@requestmapping(value = "/friends", method = requestmethod.get) public modelandview showfriends(principal principal) { modelandview mav = new modelandview("friends"); user currentuser = userservice.finduser(principal.getname()); // method returns collection<long> of userids users belong given team collection<long> userids = findusersfromteam(currentuser.getteam()); mav.addobject("users", userids); mav.addobject("currentuser", userservice.findusers(); homecoming mav; }
and, in "friends.jsp" file, next test:
<c:when test="${users.contains(currentuser.id)}">
which throws next exception:
java.lang.nosuchmethodexception: java.util.arraylist.contains(java.lang.long)
however, arraylist
class implements contains(object o)
method. what's wrong?
this result of how el parses method expressions , how reflection works
${users.contains(currentuser.id)}
it gets type of users
, arraylist
, , type of currentuser.id
, long
. uses reflection method named contains
parameter of type long
on type arraylist
. doesn't find 1 because 1 doesn't exist. remember, reflection not apply inheritance hierarchy checking on parameter list elements.
so though there arraylist#contains(object)
, there no arraylist#contains(long)
. hence fails.
don't utilize basic el this. write own el function or logic in handler method.
java spring collections el
Comments
Post a Comment