Java Spring自动绑定bean属性下拉列表
是否有一种方法可以使用spring的form.select为另一种类型的bean绑定bean属性。 例如: 我有一个bean,需要在视图中使用名为BeanB的属性进行更新: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;
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,我将用一些其他可能的东西更新我的答案