如何将数据绑定到弹簧forms列表

我有一个带有背衬物体的弹簧forms。 表格是这样的 –

    

模型类(表单支持对象) –

CampaignModel.java

 public class CampaignModel { private Campaign campaign = new CampaignImpl(); private List landingPageModels = new Arraylist; public Campaign getCampaign() { return campaign; } public void setCampaign(Campaign campaign) { this.campaign = campaign; } public List getLandingPageModels() { return landingPageModels; } public void setLandingPageModels(List landingPageModels) { this.landingPageModels = landingPageModels; } 

LandingPageModel.java是 –

 public class LandingPageModel { private LandingPage landingPage = new LandingPageImpl(); private List landingPageParameters = new ArrayList(); public LandingPage getLandingPage() { return landingPage; } public void setLandingPage(LandingPage landingPage) { this.landingPage = landingPage; } public List getLandingPageParameters() { return landingPageParameters; } public void setLandingPageParameters(List landingPageParameters) { this.landingPageParameters = landingPageParameters; } } 

LandingPage.java是 –

 public class LandingPageImpl extends EntityImpl implements LandingPage { private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } } 

所以我希望我可以在landingPageModels列表中插入许多landingPage对象(拥有自己的url属性)。 这意味着我可以拥有多个这样的url属性的输入标签 –

    

但是在执行此代码时,spring给出了一个错误,即landingPageModels的landingPage属性没有getter setter方法。 如何解决它以及如何采取这样的多重价值?

为了将列表模型属性绑定到多个输入字段,您需要在呈现的表单中:

    

这完成了:

    

您获得的错误是正确的,因为landingPageModels是一个列表。 您需要使用像landingPageModels[0].landingPage.url这样的索引访问。 如果您有动态数量的输入/ url,则可以使用创建动态输入变量名称

    

以上不适合您查看数据吗? 要在控制器中获取它们,您可能必须在HTML中使用动态表行概念,或者通过单击“添加”按钮并向后渲染为每个单个LandingPage条目添加到表单bean对象。

在我的情况下具有List属性的Person命令对象,为了绑定我们设计的标记列表作为下面的附加屏幕截图,单击Add按钮命中控制器并添加每个标记List并渲染回来在同一视图中,在列表视图中显示添加的令牌,便于为Person添加多个令牌。

在此处输入图像描述

我不知道如何使用spring form lib输入,但如果你想使用简单的html输入绑定,你可以绑定像这样的列表

Simple.jsp

 <%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>      
First Name Last Name

@controller:

 @RequestMapping(value = "/save", method = RequestMethod.POST) public ModelAndView save(@ModelAttribute("contactForm") ContactForm contactForm) { List contacts = contactForm.getContacts(); if(null != contacts && contacts.size() > 0) { ContactController.contacts = contacts; for (Contact contact : contacts) { System.out.printf("%s \t %s \n", contact.getFirstname(), contact.getLastname()); } } return new ModelAndView("show_contact", "contactForm", contactForm); } 

ContactForm.java

 import java.util.List; public class ContactForm { private List contacts; public List getContacts() { return contacts; } public void setContacts(List contacts) { this.contacts = contacts; } } 

Contact.java

 public class Contact { private String firstname; private String lastname; private String email; private String phone; public Contact() { } //getters and setters }