예.BeanUtils는 체인 세터에서 작동하지 않습니다.
class tester
{
@Test
public void testBeanUtils() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException
{
Stranger stranger = new Stranger();
BeanUtils.setProperty(stranger,"name","wener");
BeanUtils.setProperty(stranger,"xname","xwener");
BeanUtils.setProperty(stranger,"yname","ywener");
System.out.println(stranger);
}
@Data// lombok annotation generate all setter and getter
public static class Stranger
{
@Accessors(chain = true)// generate chained setter
String name;
String xname;
String yname;
public Stranger setYname(String yname)// no lombok, still not work
{
this.yname = yname;
return this;
}
}
}
내 출력 :
TestValues.Stranger(name=null, xname=xwener, yname=null)
이 문제점은 무엇입니까? 체인 세터는 좋은 것입니다. 아무 제안 사항이 있습니까?
돌아 가기 나는 Accessors chain
제거 할 수없는이 문제 오빠를 화나게 했지 시간에
편집. 이제는 commons-lang3
을 사용합니다.
// force access = true is required
Field field = FieldUtils.getField(bean.getClass(), attrName, true);
field.set(bean,value);
같은 문제가있는 사람들에게. 간단
https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.html
아마 BeanHelper 여기에 사용할 수 있습니다. Fluent 인터페이스 INstrospector를 사용하는 것 같습니다. https://apache.googlesource.com/commons-configuration/+/b5ef1eb1a7dd34a06cf68dae4bfcada9e1121818/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java –탱크, [BeanUtils2]를 기다리는 체인을 이미 비활성화했습니다. (http://commons.apache.org/sandbox/commons-beanutils2/) – wener