Javascript 当没有/更少的路径值被提交时,如何强制Spring表单清空列表?
设置:Javascript 当没有/更少的路径值被提交时,如何强制Spring表单清空列表?,javascript,java,spring,spring-mvc,spring-form,Javascript,Java,Spring,Spring Mvc,Spring Form,设置: public class MyClass { private List<Integer> selectedNumbers; public MyClass() { } public void setSelectedNumbers(List<Integer> selectedNumbers) { this.selected
public class MyClass
{
private List<Integer> selectedNumbers;
public MyClass()
{
}
public void setSelectedNumbers(List<Integer> selectedNumbers)
{
this.selectedNumbers = selectedNumbers;
}
public List<Integer> getSelectedNumbers()
{
return selectedNumbers;
}
}
@Controller
@SessionAttributes({"attributeOne", "attributeTwo"})
@RequestMapping(value = "/mypage")
public class MyController
{
@ModelAttribute
private MyClass initMyClass()
{
return new MyClass();
}
@RequestMapping(value = "/mytablepage", method = RequestMethod.GET)
public String getMyTablePage(Model model, @ModelAttribute("attributeOne") MyClass myClass)
{
return "mypage.mytablepage";
}
@RequestMapping(value = "/mytablepage", method = RequestMethod.POST)
public String postMyTablePage(Model model, @ModelAttribute("attributeOne") MyClass myClass, BindingResult bindResult)
{
//Validate and check for bind errors.
...
//End Validate and check for bind errors.
return "redirect:nextpage.do";
}
}
- 弹簧4.3.5.1释放
- Tomcat 8.5.11
- Maven 4.0.0
- Java 1.8
我有一个包含三个表的JSP。其中两个表(标题为“未选定”和“选定”)的行为非常类似于链接的选定元素,它们在彼此之间传输行。第三个表(标题为“预定义”)主要用于将预选数量的项目从未选中的表添加到选中的表中。这里最重要的是,所选表将包含多行,这些行的数据属性与数字关联 因为似乎没有Spring表单标记可以从表行中剥离数据属性值,所以我有一些Javascript来维护隐藏的输入元素以匹配所选表中的值。其格式为:
。()
下面是如何设置类和控制器:类别:
public class MyClass
{
private List<Integer> selectedNumbers;
public MyClass()
{
}
public void setSelectedNumbers(List<Integer> selectedNumbers)
{
this.selectedNumbers = selectedNumbers;
}
public List<Integer> getSelectedNumbers()
{
return selectedNumbers;
}
}
@Controller
@SessionAttributes({"attributeOne", "attributeTwo"})
@RequestMapping(value = "/mypage")
public class MyController
{
@ModelAttribute
private MyClass initMyClass()
{
return new MyClass();
}
@RequestMapping(value = "/mytablepage", method = RequestMethod.GET)
public String getMyTablePage(Model model, @ModelAttribute("attributeOne") MyClass myClass)
{
return "mypage.mytablepage";
}
@RequestMapping(value = "/mytablepage", method = RequestMethod.POST)
public String postMyTablePage(Model model, @ModelAttribute("attributeOne") MyClass myClass, BindingResult bindResult)
{
//Validate and check for bind errors.
...
//End Validate and check for bind errors.
return "redirect:nextpage.do";
}
}
问题主要在于Spring似乎只对列表值执行一种类型的更新,而不是从头开始重新创建列表。这最终导致被删除的剩余值持续存在,因为似乎没有办法让SpringDelete删除这些值
以下是该场景的一个示例:
- 没有以前的值,因此列表为[11112223334444]
- 我们只发送了两个值,因此它更新了之前列表中的前两个值,结果是[222444433334444]
有没有办法强迫Spring总是创建一个新列表,或者确保没有遗留值 我目前的解决办法是永远不要真正从列表中删除这些值;相反,我本质上为它们设置了空值,并在控制器中设置了一个过滤器,通过检查空值并删除它们来压缩列表。这是正常的吗 如果有什么不合理的地方,或者没有反映出我所说的,请告诉我。我试图将其中的很多因素最小化,所以肯定还有其他一些我没有想到的因素