我是 Spring MVC 和 JSP 开发的新手,所以请温柔地告诉我我在做一些愚蠢的事情:P 告诉那个问题:
我研究了一点 Spring MVC 并得到了一段很好的工作代码。现在我陷入了一个明显愚蠢的问题:似乎我无法将传递给 JSP 的对象返回到控制器中。我需要做的是:用户填写两个文本框,然后单击一个按钮,系统应该查询数据库,找到用户搜索的元素,将找到的元素添加到数组“capitolospesas”并重新渲染包含数组中所有对象的jsp(前一个+刚刚添加的那个)。
我创建的循环是:控制器---> jsp ---> 控制器---> jsp。映射“newProposte”使用空白值初始化页面 newEditProposte.jsp,jsp 正确获取要显示的值,用户编辑/填写所需内容并单击提交按钮。控件传递给方法“selectCapitoloSpesaFromProposte”,系统应在该方法中执行查询并将结果添加到数组“capitolospesas”,但是当我添加新对象时它总是空的,所以在页面上它只显示找到的最后一个元素。
@RequestMapping("/newProposte")
public ModelAndView newProposte()
{
System.out.println("ProposteController.newProposte()");
ModelAndView mav = new ModelAndView();
mav.addObject("proposte", new ProposteWeb());
mav.addObject("newFlag", true);
mav.addObject("capitolospesas", new HashSet<Capitolospesa>());
mav.setViewName("proposte/newEditProposte.jsp");
return mav;
}
@RequestMapping("/selectCapitoloSpesaFromProposte")
public ModelAndView selectCapitoloSpesaFromProposte(@ModelAttribute ProposteWeb proposte, @ModelAttribute HashSet<Capitolospesa> capitolospesas)
{
ModelAndView mav = new ModelAndView();
mav.addObject("proposte", proposte);
mav.addObject("newFlag", true);
capitolospesas.add(capitolospesaDAO.findCapitolospesaByCapitoloSpesaCapitoloAndCapitoloSpesaArticolo(proposte.getCapitoloSpesaCapitoloProposte(), proposte.getCapitoloSpesaArticoloProposte()));
mav.addObject("capitolospesas", capitolospesas);
mav.setViewName("proposte/newEditProposte.jsp");
return mav;
}
该jsp:
<script language="Javascript">
function selectCapitoloSpesa()
{
alert("selectCapitoloSpesaFromProposte");
document.getElementById("tabProposteForm").action = "${pageContext.request.contextPath}/selectCapitoloSpesaFromProposte";
submitForm();
return true;
}
function submitForm()
{
alert("submit");
document.getElementById("tabProposteForm").submit();
return true;
}
</script>
....
....
the form
....
....
the foreach iterating on the array "capitolospesas" showing it in a table
....
....
<input type="button" value="selectCapitoloSpesaFromProposte" name=selectCapitoloSpesaFromProposte onclick="return selectCapitoloSpesa();">
我以这种方式发帖是因为根据单击的按钮(有各种按钮),我需要表单的行为有所不同。
我阅读了所有将参数传递给jsp页面的各种教程,我必须将它们添加到ModelAndView对象,我正确地做到了这一点。在 jsp 中,我可以访问传递给它的每个对象,在本例中为“newFlag”、“capitolospesas”和“proposte”。我不明白的是,当它们从 jsp 中返回时,如何获取这些对象?到目前为止,我在唯一需要保存、编辑或删除页面上唯一实体的参数之前使用了 @ModelAttribute 注释,但现在我需要从页面中获取多个对象。在上面粘贴的代码中,我尝试多次使用 @ModelAttribute 注释,但没有成功;对象“proposte”正确填充了用户键入的内容,但我调试代码以发现每次方法“
如果有人有任何建议,请发表。