I have this function. It should update my Java Map when I press on checkbox in my html page. So the problem that it works perfect for making Map value true for specific value, but when I want to make reverse function, to make false, it doesn't work.
@PostMapping("/updateUser")
public ModelAndView updateTechs(@ModelAttribute User user, @RequestParam("techCheckbox") List<String> techs)
{
User userFromDB = userInterface.findByUsername(user.getUsername());
Map<String, Boolean> allTechs = userFromDB.getLanguagesKnows();
for(int i = 0; i < allTechs.size(); i++)
{
for(int q = 0; q < techs.size(); q++)
{
if(allTechs.keySet().toArray()[i].equals(techs.get(q)))
allTechs.put(String.valueOf(allTechs.keySet().toArray()[i]), true); // Everything is ok, map is updated
else // If no matches between keys
{
/* If i don't have this IF statement, then each element becomes false except for the last one
But at the same time this IF doesn't work
*/
if(q == techs.size())
{
allTechs.put(String.valueOf(allTechs.keySet().toArray()[i]), false); // Isn't executed
}
}
}
}
userInterface.save(userFromDB);
}
Thank you!