Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring自动绑定bean属性下拉列表_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring自动绑定bean属性下拉列表

Java Spring自动绑定bean属性下拉列表,java,spring,spring-mvc,Java,Spring,Spring Mvc,是否有一种方法可以使用spring的form.select为另一种类型的bean绑定bean属性。 例如: 我有一个bean,需要在视图中使用名为BeanB的属性进行更新: public class BeanA { private BeanB bean; private int id; private void setId(int id){ this.id = id; } private int getId(){ return this.id;

是否有一种方法可以使用spring的form.select为另一种类型的bean绑定bean属性。 例如:

我有一个bean,需要在视图中使用名为BeanB的属性进行更新:

public class BeanA {    
  private BeanB bean;
  private int id;

  private void setId(int id){
     this.id = id;
  }

  private int getId(){
     return this.id;
  }

  public void setBean(BeanB bean){
    this.bean = bean;
  }

  public BeanB getBean(){
   return this.bean;
  }
}

public class BeanB{
    private int id;

    private void setId(int id){
       this.id = id;
    }

    private int getId(){
       return this.id;
    }
}
对于视图,我想发送一个BeanB列表,以便使用spring的formcontroller进行选择:

public class MyController extends SimpleFormController{

protected ModelAndView handleRenderRequestInternal(RenderRequest request, RenderResponse response) throws Exception {
  BeanA bean = new BeanA();
  //... init the bean or retrieve from db

  List<BeanB> list = new ArrayList<BeanB>();
  //... create list of objects

  ModelAndView modelAndView = super.handleRenderRequestInternal(request, response);
  modelAndView.getModel().put("beans", list);
  modelAndView.getModel().put("bean", bean);

  return modelAndView ;
}
}
公共类MyController扩展了SimpleFormController{
受保护的ModelAndView handleRenderRequestInternal(RenderRequest请求、RenderResponse响应)引发异常{
beanabean=新的BeanA();
//…初始化bean或从数据库检索
列表=新的ArrayList();
//…创建对象列表
ModelAndView ModelAndView=super.handleRenderRequestInternal(请求、响应);
modelAndView.getModel().put(“bean”,列表);
modelAndView.getModel().put(“bean”,bean);
返回模型和视图;
}
}
在jsp中,我想使用form.select从给定列表中选择我想为BeanA设置的项,类似于:

<form:select path="${bean.bean}" items="${beans}"/>


看起来不是这样的。还有其他简单的解决方案吗?

要在HTML中创建选择标记:

<form:select path="bean" items="${candidates}" itemValue="id" itemLabel="name"/>
Spring2.5.6的文档似乎建议@Controller和@InitBinder注释可以工作。如果配置了这些注释,您将不得不为您的环境进行推断


@请参见

以HTML格式创建选择标记:

<form:select path="bean" items="${candidates}" itemValue="id" itemLabel="name"/>
Spring2.5.6的文档似乎建议@Controller和@InitBinder注释可以工作。如果配置了这些注释,您将不得不为您的环境进行推断


@请参见

谢谢,虽然我还没有测试它,但它看起来是正确的答案。我把UI属性从示例中去掉,让它变得简单。我尝试了这个:但它不起作用。它用于显示值,但不用于自动插入bean。有趣的是,添加这一行时,甚至没有调用控制器中的onSubmitAction()(没有引发异常)。我认为返回的值是一个字符串,它试图对BeanB进行转换,但失败了。还有其他想法吗?您可能需要为WebDataBinder配置一个PropertyEditor,我将用一些其他可能的东西更新我的答案,以查看Hanks,它看起来是正确的答案,尽管我还没有测试它。我把UI属性从示例中去掉,让它变得简单。我尝试了这个:但它不起作用。它用于显示值,但不用于自动插入bean。有趣的是,添加这一行时,甚至没有调用控制器中的onSubmitAction()(没有引发异常)。我认为返回的值是一个字符串,它试图对BeanB进行转换,但失败了。还有其他想法吗?您可能需要为WebDataBinder配置一个PropertyEditor,我将用一些其他可能的东西更新我的答案