@RequestMapping(method = RequestMethod.POST)
    public String fetchWeather(@ModelAttribute(ZIP_PARAM_NAME) String zipCode, HttpServletResponse response, BindingResult result) throws IOException {
        if (!zipCodeValidator.supports(zipCode.getClass())) {
            throw new IllegalArgumentException("No validators found");
        } else {
            zipCodeValidator.validate(zipCode, result);
        }

        if (result.hasErrors()) {
            response.getWriter().write(serialize(pair(ERROR_KEY, result.getAllErrors().get(0).getDefaultMessage())));
            return null;
        }
        try {
            response.getWriter().write(serialize(pair(DATA_KEY, weatherService.getWeatherData(parseInt(zipCode)))));
        } catch (WeatherServiceException e) {
            response.getWriter().write(serialize(pair(ERROR_KEY, e.getMessage())));
        }
        return null;
    }