Java spring mvc中的自定义字段访问器,而不是BeanRapper

Java spring mvc中的自定义字段访问器,而不是BeanRapper,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在视图中设置了一个基本的spring boot web mvc应用程序,其表达式如下: ${foo.bar} public class Foo { public String get(String name){ return "something calclulated"; } public void set(String name, String value){ doSomething(name, value); }

我在视图中设置了一个基本的spring boot web mvc应用程序,其表达式如下:

${foo.bar}
  public class Foo {


    public String get(String name){
        return "something calclulated";
    }

    public void set(String name, String value){
        doSomething(name, value);
    }
}
public class FooAccessor {

   getFieldValue(String fieldName, Foo target){
     return target.get(fieldName);
   }


   setFieldValue(String fieldName, String fieldValue, Foo target){
       target.set(fieldName, fieldValue)
   }
}
Foo对象的结构如下所示:

${foo.bar}
  public class Foo {


    public String get(String name){
        return "something calclulated";
    }

    public void set(String name, String value){
        doSomething(name, value);
    }
}
public class FooAccessor {

   getFieldValue(String fieldName, Foo target){
     return target.get(fieldName);
   }


   setFieldValue(String fieldName, String fieldValue, Foo target){
       target.set(fieldName, fieldValue)
   }
}
我的JSTL表达式失败,因为Foo不包含bar的getter,由于结构原因,我无法实现它

如果我试图访问Foo类型的bean,是否可以向spring添加一个自定义字段访问器,它使用我的“get”和“set”方法,而不是寻找正确的getter或setter

大概是这样的:

${foo.bar}
  public class Foo {


    public String get(String name){
        return "something calclulated";
    }

    public void set(String name, String value){
        doSomething(name, value);
    }
}
public class FooAccessor {

   getFieldValue(String fieldName, Foo target){
     return target.get(fieldName);
   }


   setFieldValue(String fieldName, String fieldValue, Foo target){
       target.set(fieldName, fieldValue)
   }
}
经过一些研究,我找到了接口PropertyAccessor,BeanRapperImpl类也使用它


不幸的是,我没有找到任何关于如何添加自定义字段访问器的示例或解决方案。

JSP EL支持传递参数已有一段时间了。如果我只把它用于显示数据,你就不能只做
${foo.get(“bar”)}
。我的目标是使用类“Foo”作为模型,以便将其绑定到表单中。如果我在JSTL中使用函数get(),我就不能使用其他绑定功能,必须自己映射控制器中的每个写操作。创建一个简单的包装类,将委托给Foo类
公共类FooWrapper{private Foo Foo;public FooWrapper(Foo Foo){this.Foo=Foo;}public void getBar(){return foo.someMethod();}public void setBar(String bar){foo.someMethod(bar);}}
感谢您的想法。这是可能的,但我无意使用通用setter,因为我必须为每个属性实现一个setter。