gpt4 book ai didi

Spring mvc 添加多行

转载 作者:行者123 更新时间:2023-12-02 05:44:42 24 4
gpt4 key购买 nike

我需要你的帮助,因为标题说我在从 jsp 表单插入多行时遇到问题。该代码来自该网站的答案。

Controller

@ModelAttribute("programform")
public ProgramForm populatePojos() {
// Don't forget to initialize the pojos list or else it won't work
ProgramForm programform = new ProgramForm();
List<Programs> programs = new ArrayList<Programs>();
for(int i=0; i<2; i++) {
programs.add(new Programs());

}
programform.setPrograms(programs);
return programform;
}




@RequestMapping(value = "/createprog")
public ModelAndView tiles2(@ModelAttribute("programform") ProgramForm programform,
BindingResult result) {
//Map<String, Object> model = new HashMap<String, Object>();
//model.put("articles", articleService.listArticles());

return new ModelAndView("createprogram");
}


@RequestMapping(value = "/saveprogram", method = RequestMethod.POST)
public ModelAndView saveProgram(@ModelAttribute("programform") ProgramForm programform,
BindingResult result) {
for(Programs programs : programform.getPrograms()) {
System.out.println(programs.getProgram_id());
articleService.addProgram(programs);
}

jsp

 <c:url var="saveProgramUrl" value="/articles/saveprogram.html" />
<form:form modelAttribute="programform" method="POST" action="${saveProgramUrl}">
<table>
<tr>
<th>ProgramId</th>
<th>Date</th>
<th>Type</th>
<th>Start</th>
<th>End</th>
<th>Location</th>
<th>User</th>
<th>Program Name</th>
</tr>
<tr>
<th><form:input path="programs[0].program_id" /></th>
<th> <form:input path="programs[0].date" id="datepick" class="date-pick"/>
<script type="text/javascript">
datepickr('datepick', { dateFormat: 'Y-m-d' });
</script></th>
<th><form:input path="programs[0].type" /></th>
<th><form:input path="programs[0].start" /></th>
<th><form:input path="programs[0].end" /></th>
<th><form:input path="programs[0].location" /></th>
<th><form:input path="programs[0].user_id" /></th>
<th><form:input path="programs[0].program_name" /></th>
</tr>
<tr>
<th><form:input path="programs[1].program_id" /></th>
<th> <form:input path="programs[1].date" id="datepick" class="date-pick"/>
<script type="text/javascript">
datepickr('datepick', { dateFormat: 'Y-m-d' });
</script></th>
<th><form:input path="programs[1].type" /></th>
<th><form:input path="programs[1].start" /></th>
<th><form:input path="programs[1].end" /></th>
<th><form:input path="programs[1].location" /></th>
<th><form:input path="programs[1].user_id" /></th>
<th><form:input path="programs[1].program_name" /></th>
</tr>
</table>
<br/>
<input type="submit" value="Insert User" />
</form:form>

程序

    package net.roseindia.model;



import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "program")
public class Programs {




@Id
@Column(name = "Program_Id")
private int program_id;
@Column(name = "Date")
private String date;
@Column(name = "Duty_Type")
private String type;
@Column(name = "Duty_Start_Time")
private String start;
@Column(name = "Duty_End_Time")
private String end;
@Column(name = "Location")
private String location;
@Column(name = "User_Id")
private int user_id;
@Column(name = "Program_Name")
private String program_name;


public int getProgram_id() {
return program_id;
}


public void setProgram_id(int program_id) {
this.program_id = program_id;
}


public String getDate() {
return date;
}


public void setDate(String date) {
this.date = date;
}


public String getType() {
return type;
}


public void setType(String type) {
this.type = type;
}




public String getStart() {
return start;
}


public void setStart(String start) {
this.start = start;
}


public String getEnd() {
return end;
}


public void setEnd(String end) {
this.end = end;
}


public String getLocation() {
return location;
}


public void setLocation(String location) {
this.location = location;
}


public int getUser_id() {
return user_id;
}


public void setUser_id(int user_id) {
this.user_id = user_id;
}


public String getProgram_name() {
return program_name;
}


public void setProgram_name(String program_name) {
this.program_name = program_name;
}


public Programs() {

}





}

程序表单

package net.roseindia.model;

import java.util.List;

public class ProgramForm {



private List<Programs> programs;

public List<Programs> getPrograms() {
return programs;
}

public void setPrograms(List<Programs> programs) {
this.programs = programs;
}


}

当我按下按钮将其保存到程序时,数据库中没有插入任何内容,我做错了什么?

最佳答案

要添加多行,您需要延迟初始化列表。请按照以下方式更改 @ModelAttribute("programform") 中的代码,然后重试。

@ModelAttribute("programform") 
public ProgramForm populatePojos() {
// Don't forget to initialize the pojos list or else it won't work
ProgramForm programform = new ProgramForm();
List<Programs> programs = LazyList.decorate(new ArrayList<Programs>(), FactoryUtils.instantiateFactory(Programs.class));

for(int i=0; i<2; i++) {
programs.add(new Programs());

}
programform.setPrograms(programs);
return programform;
}

通过如上所述初始化列表,您还可以使用 JavaScript 添加更多运行时字段,并可以将这些值绑定(bind)到您的列表中。

完成此更改后,如果它不起作用,那么您需要在 jsp 页面中进行更改。不要使用 use simple 标签,但不要忘记在 name 属性中指定与您在此处的 path 属性中指定的值相同的值。

希望这对您有帮助。干杯。

关于Spring mvc 添加多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878748/

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