根据名称获取属性值 ConfigurationProperty property = findProperty(name, context); if (property == null && != 0 && containsNoDescendantOf(rces(), name)) { return null; } AggregateBinder> aggregateBinder = getAggregateBinder(target, context); if (aggregateBinder != null) { return bindAggregate(name, target, handler, context, aggregateBinder); } if (property != null) { try { return bindProperty(target, context, property); } catch (ConverterNotFoundException ex) { // We might still be able to bind it using the recursive binders Object instance = bindDataObject(name, target, handler, context, allowRecursiveBinding); if (instance != null) { return instance; } throw ex; } } return bindDataObject(name, target, handler, context, allowRecursiveBinding); }anBinder源码/* * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * /licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package ;import pector;import tion;import ;import ;import er;import ;import ator;import HashMap;import ;import umer;import on;import er;import ils;import t;import urationPropertyName;import urationPropertySource;import urationPropertyState;import Parameter;import ableType;
/* * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * /licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package ;/** * Internal utility to help when dealing with data object property names. * * @author Phillip Webb * @author Madhura Bhave * @since 2.2.3 * @see DataObjectBinder */public abstract class DataObjectPropertyName { private DataObjectPropertyName() { } /** * Return the specified Java Bean property name in dashed form. * @param name the source name * @return the dashed from */ public static String toDashedForm(String name) { StringBuilder result = new StringBuilder(()); boolean inIndex = false; for (int i = 0; i < (); i++) { char ch = (i); if (inIndex) { (ch); if (ch == ']') { inIndex = false; } } else { if (ch == '[') { inIndex = true; (ch); } else { ch = (ch != '_') ? ch : '-'; if (rCase(ch) && () > 0 && (() - 1) != '-') { ('-'); } (rCase(ch)); } } } return ng(); }}
发表评论