gpt4 book ai didi

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

转载 作者:知者 更新时间:2024-03-21 15:01:05 30 4
gpt4 key购买 nike

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

WebExchangeDataBinder介绍

[英]Specialized org.springframework.validation.DataBinder to perform data binding from URL query params or form data in the request data to Java objects.
[中]专门组织。springframework。验证。DataBinder执行从URL查询参数或请求数据中的表单数据到Java对象的数据绑定。

代码示例

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

@Before
public void setup() throws Exception {
  this.testBean = new TestBean();
  this.binder = new WebExchangeDataBinder(this.testBean, "person");
  this.binder.registerCustomEditor(ITestBean.class, new TestBeanPropertyEditor());
}

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

/**
 * Protected method to obtain the values for data binding. By default this
 * method delegates to {@link #extractValuesToBind(ServerWebExchange)}.
 */
protected Mono<Map<String, Object>> getValuesToBind(ServerWebExchange exchange) {
  return extractValuesToBind(exchange);
}

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

/**
 * Combine query params and form data for multipart form data from the body
 * of the request into a {@code Map<String, Object>} of values to use for
 * data binding purposes.
 * @param exchange the current exchange
 * @return a {@code Mono} with the values to bind
 * @see org.springframework.http.server.reactive.ServerHttpRequest#getQueryParams()
 * @see ServerWebExchange#getFormData()
 * @see ServerWebExchange#getMultipartData()
 */
public static Mono<Map<String, Object>> extractValuesToBind(ServerWebExchange exchange) {
  MultiValueMap<String, String> queryParams = exchange.getRequest().getQueryParams();
  Mono<MultiValueMap<String, String>> formData = exchange.getFormData();
  Mono<MultiValueMap<String, Part>> multipartData = exchange.getMultipartData();
  return Mono.zip(Mono.just(queryParams), formData, multipartData)
      .map(tuple -> {
        Map<String, Object> result = new TreeMap<>();
        tuple.getT1().forEach((key, values) -> addBindValue(result, key, values));
        tuple.getT2().forEach((key, values) -> addBindValue(result, key, values));
        tuple.getT3().forEach((key, values) -> addBindValue(result, key, values));
        return result;
      });
}

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

private void validate(Object target, Object[] validationHints, MethodParameter param,
    BindingContext binding, ServerWebExchange exchange) {
  String name = Conventions.getVariableNameForParameter(param);
  WebExchangeDataBinder binder = binding.createDataBinder(exchange, target, name);
  binder.validate(validationHints);
  if (binder.getBindingResult().hasErrors()) {
    throw new WebExchangeBindException(param, binder.getBindingResult());
  }
}

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

/**
 * Bind query params, form data, and or multipart form data to the binder target.
 * @param exchange the current exchange.
 * @return a {@code Mono<Void>} when binding is complete
 */
public Mono<Void> bind(ServerWebExchange exchange) {
  return getValuesToBind(exchange)
      .doOnNext(values -> doBind(new MutablePropertyValues(values)))
      .then();
}

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

@Test
public void testMultipart() throws Exception {
  MultipartBean bean = new MultipartBean();
  WebExchangeDataBinder binder = new WebExchangeDataBinder(bean);
  MultiValueMap<String, Object> data = new LinkedMultiValueMap<>();
  data.add("name", "bar");
  data.add("someList", "123");
  data.add("someList", "abc");
  data.add("someArray", "dec");
  data.add("someArray", "456");
  data.add("part", new ClassPathResource("org/springframework/http/codec/multipart/foo.txt"));
  data.add("somePartList", new ClassPathResource("org/springframework/http/codec/multipart/foo.txt"));
  data.add("somePartList", new ClassPathResource("org/springframework/http/server/reactive/spring.png"));
  binder.bind(exchangeMultipart(data)).block(Duration.ofMillis(5000));
  assertEquals("bar", bean.getName());
  assertEquals(Arrays.asList("123", "abc"), bean.getSomeList());
  assertArrayEquals(new String[] {"dec", "456"}, bean.getSomeArray());
  assertEquals("foo.txt", bean.getPart().filename());
  assertEquals(2, bean.getSomePartList().size());
  assertEquals("foo.txt", bean.getSomePartList().get(0).filename());
  assertEquals("spring.png", bean.getSomePartList().get(1).filename());
}

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

@Test
public void testWithCommaSeparatedStringArray() throws Exception {
  MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
  formData.add("stringArray", "bar");
  formData.add("stringArray", "abc");
  formData.add("stringArray", "123,def");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertEquals("Expected all three items to be bound", 3, this.testBean.getStringArray().length);
  formData.remove("stringArray");
  formData.add("stringArray", "123,def");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertEquals("Expected only 1 item to be bound", 1, this.testBean.getStringArray().length);
}

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

return binder.bind(exchange)
    .doOnError(bindingResultMono::onError)
    .doOnSuccess(aVoid -> {
      validateIfApplicable(binder, parameter);
      BindingResult errors = binder.getBindingResult();
      model.put(BindingResult.MODEL_KEY_PREFIX + name, errors);
      model.put(name, value);
    })
    .then(Mono.fromCallable(() -> {
      BindingResult errors = binder.getBindingResult();
      if (adapter != null) {
        return adapter.fromPublisher(errors.hasErrors() ?

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

@Test
public void requestMappingHandlerAdapter() throws Exception {
  ApplicationContext context = loadConfig(WebFluxConfig.class);
  String name = "requestMappingHandlerAdapter";
  RequestMappingHandlerAdapter adapter = context.getBean(name, RequestMappingHandlerAdapter.class);
  assertNotNull(adapter);
  List<HttpMessageReader<?>> readers = adapter.getMessageReaders();
  assertEquals(13, readers.size());
  ResolvableType multiValueMapType = forClassWithGenerics(MultiValueMap.class, String.class, String.class);
  assertHasMessageReader(readers, forClass(byte[].class), APPLICATION_OCTET_STREAM);
  assertHasMessageReader(readers, forClass(ByteBuffer.class), APPLICATION_OCTET_STREAM);
  assertHasMessageReader(readers, forClass(String.class), TEXT_PLAIN);
  assertHasMessageReader(readers, forClass(Resource.class), IMAGE_PNG);
  assertHasMessageReader(readers, forClass(Message.class), new MediaType("application", "x-protobuf"));
  assertHasMessageReader(readers, multiValueMapType, APPLICATION_FORM_URLENCODED);
  assertHasMessageReader(readers, forClass(TestBean.class), APPLICATION_XML);
  assertHasMessageReader(readers, forClass(TestBean.class), APPLICATION_JSON);
  assertHasMessageReader(readers, forClass(TestBean.class), new MediaType("application", "x-jackson-smile"));
  assertHasMessageReader(readers, forClass(TestBean.class), null);
  WebBindingInitializer bindingInitializer = adapter.getWebBindingInitializer();
  assertNotNull(bindingInitializer);
  WebExchangeDataBinder binder = new WebExchangeDataBinder(new Object());
  bindingInitializer.initBinder(binder);
  name = "webFluxConversionService";
  ConversionService service = context.getBean(name, ConversionService.class);
  assertSame(service, binder.getConversionService());
  name = "webFluxValidator";
  Validator validator = context.getBean(name, Validator.class);
  assertSame(validator, binder.getValidator());
}

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

/**
 * Create a {@link WebExchangeDataBinder} to apply data binding and
 * validation with on the target, command object.
 * @param exchange the current exchange
 * @param target the object to create a data binder for
 * @param name the name of the target object
 * @return the created data binder
 * @throws ServerErrorException if {@code @InitBinder} method invocation fails
 */
public WebExchangeDataBinder createDataBinder(ServerWebExchange exchange, @Nullable Object target, String name) {
  WebExchangeDataBinder dataBinder = new WebExchangeDataBinder(target, name);
  if (this.initializer != null) {
    this.initializer.initBinder(dataBinder);
  }
  return initDataBinder(dataBinder, exchange);
}

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

@Test
public void testFieldPrefixCausesFieldResetWithIgnoreUnknownFields() throws Exception {
  this.binder.setIgnoreUnknownFields(false);
  MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
  formData.add("_postProcessed", "visible");
  formData.add("postProcessed", "on");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertTrue(this.testBean.isPostProcessed());
  formData.remove("postProcessed");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertFalse(this.testBean.isPostProcessed());
}

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

private void updateBindingContext(BindingContext context, ServerWebExchange exchange) {
  Map<String, Object> model = context.getModel().asMap();
  model.keySet().stream()
      .filter(name -> isBindingCandidate(name, model.get(name)))
      .filter(name -> !model.containsKey(BindingResult.MODEL_KEY_PREFIX + name))
      .forEach(name -> {
        WebExchangeDataBinder binder = context.createDataBinder(exchange, model.get(name), name);
        model.put(BindingResult.MODEL_KEY_PREFIX + name, binder.getBindingResult());
      });
}

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

private void validateIfApplicable(WebExchangeDataBinder binder, MethodParameter parameter) {
  for (Annotation ann : parameter.getParameterAnnotations()) {
    Validated validatedAnn = AnnotationUtils.getAnnotation(ann, Validated.class);
    if (validatedAnn != null || ann.annotationType().getSimpleName().startsWith("Valid")) {
      Object hints = (validatedAnn != null ? validatedAnn.value() : AnnotationUtils.getValue(ann));
      if (hints != null) {
        Object[] validationHints = (hints instanceof Object[] ? (Object[]) hints : new Object[] {hints});
        binder.validate(validationHints);
      }
      else {
        binder.validate();
      }
    }
  }
}

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

/**
 * Bind query params, form data, and or multipart form data to the binder target.
 * @param exchange the current exchange.
 * @return a {@code Mono<Void>} when binding is complete
 */
public Mono<Void> bind(ServerWebExchange exchange) {
  return getValuesToBind(exchange)
      .doOnNext(values -> doBind(new MutablePropertyValues(values)))
      .then();
}

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

@Test
public void testFieldPrefixCausesFieldReset() throws Exception {
  MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
  formData.add("_postProcessed", "visible");
  formData.add("postProcessed", "on");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertTrue(this.testBean.isPostProcessed());
  formData.remove("postProcessed");
  this.binder.bind(exchange(formData)).block(Duration.ofMillis(5000));
  assertFalse(this.testBean.isPostProcessed());
}

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

return binder.bind(exchange)
    .doOnError(bindingResultMono::onError)
    .doOnSuccess(aVoid -> {
      validateIfApplicable(binder, parameter);
      BindingResult errors = binder.getBindingResult();
      model.put(BindingResult.MODEL_KEY_PREFIX + name, errors);
      model.put(name, value);
    })
    .then(Mono.fromCallable(() -> {
      BindingResult errors = binder.getBindingResult();
      if (adapter != null) {
        return adapter.fromPublisher(errors.hasErrors() ?

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

protected void validate(Object target, Object[] validationHints,
    MethodParameter param, BindingContext binding, ServerWebExchange exchange) {
  String name = Conventions.getVariableNameForParameter(param);
  WebExchangeDataBinder binder = binding.createDataBinder(exchange, target, name);
  binder.validate(validationHints);
  if (binder.getBindingResult().hasErrors()) {
    throw new WebExchangeBindException(param, binder.getBindingResult());
  }
}

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

/**
 * Create the data binder instance.
 */
protected WebExchangeDataBinder createBinderInstance(Object target, String objectName) {
  return new WebExchangeDataBinder(target, objectName);
}

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

private void addBindingResult(HandlerResult result, ServerWebExchange exchange) {
  BindingContext context = result.getBindingContext();
  Map<String, Object> model = context.getModel().asMap();
  model.keySet().stream()
      .filter(name -> isBindingCandidate(name, model.get(name)))
      .filter(name -> !model.containsKey(BindingResult.MODEL_KEY_PREFIX + name))
      .forEach(name -> {
        WebExchangeDataBinder binder = context.createDataBinder(exchange, model.get(name), name);
        model.put(BindingResult.MODEL_KEY_PREFIX + name, binder.getBindingResult());
      });
}

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

protected void validateIfApplicable(WebExchangeDataBinder binder, MethodParameter parameter) {
  Annotation[] annotations = parameter.getParameterAnnotations();
  for (Annotation ann : annotations) {
    Validated validAnnot = AnnotationUtils.getAnnotation(ann, Validated.class);
    if (validAnnot != null || ann.annotationType().getSimpleName().startsWith("Valid")) {
      Object hints = (validAnnot != null ? validAnnot.value() : AnnotationUtils.getValue(ann));
      Object hintArray = (hints instanceof Object[] ? (Object[]) hints : new Object[] {hints});
      binder.validate(hintArray);
    }
  }
}

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com