0

私は春に関する本を読んでおり、春のmvcに関する章で、著者はフォームの送信を担当する次のコントローラーコードをリストしています。私の質問(著者は言及していないので、HttpServletRequestを使用する理由と場所です)メソッドは次のとおりです。

@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.POST)
    public String update(@Valid Contact contact, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes, Locale locale)
    {
        logger.info("Updating contact");

        if (bindingResult.hasErrors())
        {
            uiModel.addAttribute("message", new Message("error", messageSource.getMessage("contact_save_fail", new Object[]{}, locale)));
            uiModel.addAttribute("contact", contact);
            return "contacts/update";
        }

        uiModel.asMap().clear();
        redirectAttributes.addFlashAttribute("message", new Message("success", messageSource.getMessage("contact_save_success", new Object[]{}, locale)));
        contactService.save(contact);
        return "redirect:/contacts/" + UrlUtil.encodeUrlPathSegment(contact.getId().toString(), httpServletRequest);
    }
4

1 に答える 1

1

必要な時にいつでも使え...

この例では、作成者はそれを使用して文字エンコーディングを取得しています。

return "redirect:/contacts/" + UrlUtil.encodeUrlPathSegment(contact.getId().toString(), httpServletRequest);

UrlUtil クラスのコードは次のとおりです。

public class UrlUtil {
    public static String encodeUrlPathSegment(String pathSegment, HttpServletRequest
            httpServletRequest) {
        String enc = httpServletRequest.getCharacterEncoding();
        if (enc == null) {
            enc = WebUtils.DEFAULT_CHARACTER_ENCODING;
        }
        try {
            pathSegment = UriUtils.encodePathSegment(pathSegment, enc);
        } catch (UnsupportedEncodingException uee) {
        }
        return pathSegment;
    }
}

HttpServletRequestクラスに関する詳細情報:

インターフェースを拡張して、サーブレットServletRequestのリクエスト情報を提供します。クラスのメソッドについて詳しく知りたい場合は、 javadocHTTPを読むことを検討してください。

于 2013-07-09T19:02:13.497 に答える