@RequestMapping(value = "search") public String search( Model model, @RequestParam("id") String jarid, @RequestParam("q") final String query) { model.addAttribute("id", jarid); model.addAttribute("query", query); if (Database.get(jarid) == null) { return null; } FileItem path = (FileItem) Database.get(jarid).getObj(); model.addAttribute("jarFile", path); try { ClassMap classMap = ClassMap.build(new JarFile(new File(path.getFullName()).getCanonicalPath())); classMap.rebuildConfig(new RenameConfig(), null); model.addAttribute("classMap", classMap); final Set<String> matches = new TreeSet<String>(); ClassWalker walker = new ClassWalker() { @Override public void walk(ClassInfo classInfo) { if (classInfo.getClassShortName().equals(query)) { matches.add(classInfo.getClassName()); } } }; classMap.walk(walker); if (matches.size() == 1) { model.addAttribute("clz", matches.iterator().next()); return "redirect:/jarviewer/view.htm"; } model.addAttribute("matches", matches); } catch (IOException e) { e.printStackTrace(); } return "/jarviewer/search"; }