org.springframework.web.bind.support.WebRequestDataBinder类的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(11.7k)|赞(0)|评价(0)|浏览(118)

本文整理了Java中org.springframework.web.bind.support.WebRequestDataBinder类的一些代码示例,展示了WebRequestDataBinder类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WebRequestDataBinder类的具体详情如下:
包路径:org.springframework.web.bind.support.WebRequestDataBinder
类名称:WebRequestDataBinder

WebRequestDataBinder介绍

[英]Special org.springframework.validation.DataBinder to perform data binding from web request parameters to JavaBeans, including support for multipart files.

See the DataBinder/WebDataBinder superclasses for customization options, which include specifying allowed/required fields, and registering custom property editors.

Can also used for manual data binding in custom web controllers or interceptors that build on Spring's org.springframework.web.context.request.WebRequestabstraction: e.g. in a org.springframework.web.context.request.WebRequestInterceptorimplementation. Simply instantiate a WebRequestDataBinder for each binding process, and invoke bind with the current WebRequest as argument:

  1. MyBean myBean = new MyBean();
  2. // apply binder to custom target object
  3. WebRequestDataBinder binder = new WebRequestDataBinder(myBean);
  4. // register custom editors, if desired
  5. binder.registerCustomEditor(...);
  6. // trigger actual binding of request parameters
  7. binder.bind(request);
  8. // optionally evaluate binding errors
  9. Errors errors = binder.getErrors();
  10. ...

[中]特别组织。springframework。验证。DataBinder执行从web请求参数到JavaBeans的数据绑定,包括对多部分文件的支持。
有关自定义选项,请参见DataBinder/WebDataBinder超类,其中包括指定允许/必需字段,以及注册自定义属性编辑器。
也可以用于在Spring组织上构建的自定义web控制器或拦截器中手动绑定数据。springframework。网状物上下文要求WebRequestabstraction:例如在组织中。springframework。网状物上下文要求WebRequestInterceptorimplementation。只需为每个绑定进程实例化一个WebRequestDataBinder,并以当前WebRequest作为参数调用bind:

  1. MyBean myBean = new MyBean();
  2. // apply binder to custom target object
  3. WebRequestDataBinder binder = new WebRequestDataBinder(myBean);
  4. // register custom editors, if desired
  5. binder.registerCustomEditor(...);
  6. // trigger actual binding of request parameters
  7. binder.bind(request);
  8. // optionally evaluate binding errors
  9. Errors errors = binder.getErrors();
  10. ...

代码示例

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. public void service(HttpServletRequest request, HttpServletResponse response) {
  3. WebRequestDataBinder binder = new WebRequestDataBinder(bean);
  4. ServletWebRequest webRequest = new ServletWebRequest(request, response);
  5. binder.bind(webRequest);
  6. response.setStatus(HttpServletResponse.SC_OK);
  7. }

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Treats errors as fatal.
  3. * <p>Use this method only if it's an error if the input isn't valid.
  4. * This might be appropriate if all input is from dropdowns, for example.
  5. * @throws BindException if binding errors have been encountered
  6. */
  7. public void closeNoCatch() throws BindException {
  8. if (getBindingResult().hasErrors()) {
  9. throw new BindException(getBindingResult());
  10. }
  11. }

代码示例来源:origin: spring-projects/spring-framework

  1. if (isMultipartRequest(request) && request instanceof NativeWebRequest) {
  2. MultipartRequest multipartRequest = ((NativeWebRequest) request).getNativeRequest(MultipartRequest.class);
  3. if (multipartRequest != null) {
  4. bindMultipart(multipartRequest.getMultiFileMap(), mpvs);
  5. bindParts(servletRequest, mpvs);
  6. doBind(mpvs);

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testMultipartFileAsString() {
  3. TestBean target = new TestBean();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(target);
  5. binder.registerCustomEditor(String.class, new StringMultipartFileEditor());
  6. MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
  7. request.addFile(new MockMultipartFile("name", "Juergen".getBytes()));
  8. binder.bind(new ServletWebRequest(request));
  9. assertEquals("Juergen", target.getName());
  10. }

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Extension point to create the WebDataBinder instance.
  3. * By default this is {@code WebRequestDataBinder}.
  4. * @param target the binding target or {@code null} for type conversion only
  5. * @param objectName the binding target object name
  6. * @param webRequest the current request
  7. * @throws Exception in case of invalid state or arguments
  8. */
  9. protected WebDataBinder createBinderInstance(
  10. @Nullable Object target, String objectName, NativeWebRequest webRequest) throws Exception {
  11. return new WebRequestDataBinder(target, objectName);
  12. }

代码示例来源:origin: stackoverflow.com

  1. @RequestMapping(value = "/add/{name}", method = RequestMethod.POST)
  2. public String processForm(@PathVariable String name, WebRequest request) {
  3. //System.out.println(bean);
  4. Object myBean = registry.lookup(name);
  5. WebRequestDataBinder binder = new WebRequestDataBinder(myBean);
  6. // optionnaly configure the binder
  7. ...
  8. // trigger actual binding of request parameters
  9. binder.bind(request);
  10. // optionally validate
  11. binder.validate();
  12. // process binding results
  13. BindingResult result = binder.getBindingResult();
  14. ...
  15. return "redirect:/add/" + name;
  16. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testBindingWithNestedObjectCreationThroughAutoGrow() throws Exception {
  3. TestBean tb = new TestBeanWithConcreteSpouse();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
  5. binder.setIgnoreUnknownFields(false);
  6. MockHttpServletRequest request = new MockHttpServletRequest();
  7. request.addParameter("concreteSpouse.name", "test");
  8. binder.bind(new ServletWebRequest(request));
  9. assertNotNull(tb.getSpouse());
  10. assertEquals("test", tb.getSpouse().getName());
  11. }

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Extension point to bind the request to the target object.
  3. * @param binder the data binder instance to use for the binding
  4. * @param request the current request
  5. */
  6. protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request) {
  7. ((WebRequestDataBinder) binder).bind(request);
  8. }

代码示例来源:origin: org.parancoe/parancoe-web

  1. protected void doBind(NativeWebRequest webRequest, WebDataBinder binder,
  2. boolean failOnErrors)
  3. throws Exception {
  4. WebRequestDataBinder requestBinder = (WebRequestDataBinder) binder;
  5. requestBinder.bind(webRequest);
  6. if (failOnErrors) {
  7. requestBinder.closeNoCatch();
  8. }
  9. }

代码示例来源:origin: spring-projects/spring-framework

  1. private void bindParts(HttpServletRequest request, MutablePropertyValues mpvs) {
  2. try {
  3. MultiValueMap<String, Part> map = new LinkedMultiValueMap<>();
  4. for (Part part : request.getParts()) {
  5. map.add(part.getName(), part);
  6. }
  7. map.forEach((key, values) -> {
  8. if (values.size() == 1) {
  9. Part part = values.get(0);
  10. if (isBindEmptyMultipartFiles() || part.getSize() > 0) {
  11. mpvs.add(key, part);
  12. }
  13. }
  14. else {
  15. mpvs.add(key, values);
  16. }
  17. });
  18. }
  19. catch (Exception ex) {
  20. throw new MultipartException("Failed to get request parts", ex);
  21. }
  22. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testMultipartFileAsStringArray() {
  3. TestBean target = new TestBean();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(target);
  5. binder.registerCustomEditor(String.class, new StringMultipartFileEditor());
  6. MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
  7. request.addFile(new MockMultipartFile("stringArray", "Juergen".getBytes()));
  8. binder.bind(new ServletWebRequest(request));
  9. assertEquals(1, target.getStringArray().length);
  10. assertEquals("Juergen", target.getStringArray()[0]);
  11. }

代码示例来源:origin: org.springframework/spring-web

  1. /**
  2. * Extension point to create the WebDataBinder instance.
  3. * By default this is {@code WebRequestDataBinder}.
  4. * @param target the binding target or {@code null} for type conversion only
  5. * @param objectName the binding target object name
  6. * @param webRequest the current request
  7. * @throws Exception in case of invalid state or arguments
  8. */
  9. protected WebDataBinder createBinderInstance(
  10. @Nullable Object target, String objectName, NativeWebRequest webRequest) throws Exception {
  11. return new WebRequestDataBinder(target, objectName);
  12. }

代码示例来源:origin: stackoverflow.com

  1. @RequestMapping(value = "/{name}", method = RequestMethod.POST)
  2. public String submitFormAction(@PathVariable("name") final String name, final WebRequest request, final Model model) {
  3. final Object bean = registry.lookup(name);
  4. final Validator validator = validatorRegistry.lookup(name);
  5. final WebRequestDataBinder binder = new WebRequestDataBinder(bean, "bean");
  6. binder.setValidator(validator);
  7. binder.validate();
  8. binder.bind(request);
  9. final BindingResult result = binder.getBindingResult();
  10. if (result.hasErrors()) {
  11. model.addAttribute("name", name);
  12. model.addAllAttributes(result.getModel());
  13. return "form";
  14. }
  15. return "redirect:/" + name;
  16. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testFieldPrefixCausesFieldResetWithIgnoreUnknownFields() throws Exception {
  3. TestBean target = new TestBean();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(target);
  5. binder.setIgnoreUnknownFields(false);
  6. MockHttpServletRequest request = new MockHttpServletRequest();
  7. request.addParameter("_postProcessed", "visible");
  8. request.addParameter("postProcessed", "on");
  9. binder.bind(new ServletWebRequest(request));
  10. assertTrue(target.isPostProcessed());
  11. request.removeParameter("postProcessed");
  12. binder.bind(new ServletWebRequest(request));
  13. assertFalse(target.isPostProcessed());
  14. }

代码示例来源:origin: org.springframework/spring-web

  1. /**
  2. * Extension point to bind the request to the target object.
  3. * @param binder the data binder instance to use for the binding
  4. * @param request the current request
  5. */
  6. protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request) {
  7. ((WebRequestDataBinder) binder).bind(request);
  8. }

代码示例来源:origin: org.springframework/spring-web

  1. private void bindParts(HttpServletRequest request, MutablePropertyValues mpvs) {
  2. try {
  3. MultiValueMap<String, Part> map = new LinkedMultiValueMap<>();
  4. for (Part part : request.getParts()) {
  5. map.add(part.getName(), part);
  6. }
  7. map.forEach((key, values) -> {
  8. if (values.size() == 1) {
  9. Part part = values.get(0);
  10. if (isBindEmptyMultipartFiles() || part.getSize() > 0) {
  11. mpvs.add(key, part);
  12. }
  13. }
  14. else {
  15. mpvs.add(key, values);
  16. }
  17. });
  18. }
  19. catch (Exception ex) {
  20. throw new MultipartException("Failed to get request parts", ex);
  21. }
  22. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testEnumBinding() {
  3. EnumHolder target = new EnumHolder();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(target);
  5. MockHttpServletRequest request = new MockHttpServletRequest();
  6. request.addParameter("myEnum", "FOO");
  7. binder.bind(new ServletWebRequest(request));
  8. assertEquals(MyEnum.FOO, target.getMyEnum());
  9. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void testMultipartFilesAsStringArray() {
  3. TestBean target = new TestBean();
  4. WebRequestDataBinder binder = new WebRequestDataBinder(target);
  5. binder.registerCustomEditor(String.class, new StringMultipartFileEditor());
  6. MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
  7. request.addFile(new MockMultipartFile("stringArray", "Juergen".getBytes()));
  8. request.addFile(new MockMultipartFile("stringArray", "Eva".getBytes()));
  9. binder.bind(new ServletWebRequest(request));
  10. assertEquals(2, target.getStringArray().length);
  11. assertEquals("Juergen", target.getStringArray()[0]);
  12. assertEquals("Eva", target.getStringArray()[1]);
  13. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void resolveOptional() throws Exception {
  3. WebDataBinder dataBinder = new WebRequestDataBinder(null);
  4. dataBinder.setConversionService(new DefaultConversionService());
  5. WebDataBinderFactory factory = mock(WebDataBinderFactory.class);
  6. given(factory.createBinder(this.webRequest, null, "foo")).willReturn(dataBinder);
  7. MethodParameter param = initMethodParameter(3);
  8. Object actual = testResolveArgument(param, factory);
  9. assertNotNull(actual);
  10. assertEquals(Optional.class, actual.getClass());
  11. assertFalse(((Optional<?>) actual).isPresent());
  12. Foo foo = new Foo();
  13. this.webRequest.setAttribute("foo", foo, getScope());
  14. actual = testResolveArgument(param, factory);
  15. assertNotNull(actual);
  16. assertEquals(Optional.class, actual.getClass());
  17. assertTrue(((Optional<?>) actual).isPresent());
  18. assertSame(foo, ((Optional<?>) actual).get());
  19. }

代码示例来源:origin: org.springframework/spring-web

  1. if (isMultipartRequest(request) && request instanceof NativeWebRequest) {
  2. MultipartRequest multipartRequest = ((NativeWebRequest) request).getNativeRequest(MultipartRequest.class);
  3. if (multipartRequest != null) {
  4. bindMultipart(multipartRequest.getMultiFileMap(), mpvs);
  5. bindParts(servletRequest, mpvs);
  6. doBind(mpvs);

相关文章