gpt4 book ai didi

spring-mvc - 如何在spring mvc框架中为对象的LIST做映射

转载 作者:行者123 更新时间:2023-12-02 04:33:17 24 4
gpt4 key购买 nike

我有以下 POJO 类 作为输入 -

public class Input implements java.io.Serializable {

private String id;
private List<Inputbenefit> Inputbenefits;
//and getter and setter method
}

现在在 controller 我有 initbinder -

@InitBinder
public void initBinder(Object target,WebDataBinder binder) {
binder.registerCustomEditor(ArrayList.class, new CustomCollectionEditor(ArrayList.class) {
@Override
protected Object convertElement(Object element) {
Input input= new Input ();
if (element != null) {
ArrayList<Inputbenefit> id = (ArrayList<Inputbenefit>) element;
input.setInputbenefits(id);
}
return input;
}
});

Controller 中的 Post 方法签名是 -

@RequestMapping(value = "/addDependentOutput.html", method = RequestMethod.POST)
public String OutputForm(@ModelAttribute("Input") Input input, BindingResult result, Model model)

在 JSP 中 - 我有 5 个固定的文本框来为 Input 类取值 -

<spring:bind path="inputbenefits.benefitId">                
<form:input path="${status.expression}" size="10" value="Manisha"/>
</spring:bind>

我没有从 html 表单获取值到 OutputForm,即无法读取在 Controller post 方法 OutputForm 中提交的 inputbenefits.benefitId 的值。

简而言之 - 我的 List 对象值没有传递给 Controller ​​方法。

请帮忙。谢谢。

最佳答案

你不应该从 converElement 方法返回宿主对象,你应该返回你的集合对象

        @Override  
protected Object convertElement(Object element) {
int benefitId = Integer.parseInt(element.toString());
return benefitService.getById(benefitId);
}

更新

我假设您尝试将福利集合绑定(bind)到您的输入对象,并且您有一个表单来创建新的输入和选择控件以选择所需的福利。正确的?如果为真,你需要这样的东西

使用表单 Spring 标签

        <form:select path="inputBenefits" items="${benefits}" 
multiple="multiple" size="5" itemLabel="additionalAmt" itemValue="benefitId"/>
<form:errors path="inputBenefits"/>

其中 ${benefits} 是您指向该页面的可用权益的集合

在你的 Controller 中你需要

@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
binder.registerCustomEditor(List.class, "inputBenefits", new CustomCollectionEditor(List.class) {

protected Object convertElement(Object element) {
if (element != null) {
Integer benefitId = Integer.parseInt(element.toString());
Benefit benefit = benefitService.getById(benefitId); // something that able to get benefit object
return benefit;

}
return null;
}

});

}

这种方法 convertElement 将为页面选择控件上选择的每个值调用。之后, yield 集合将被推送到命令表单对象(我想是输入)

此处为简单示例 http://www.tutorialspoint.com/spring/spring_mvc_form_handling_example.htm

关于spring-mvc - 如何在spring mvc框架中为对象的LIST做映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com