我使用SpringMVC表单来构造我的jsp表单,我使用Model属性来向jsp和控制器传递数据。
我的问题是,从控制器类中的一个方法开始,我正在构造这个完整的模型对象,并使用ModelMap将其发送到JSP,我成功地接收到这个模型属性,并在从控制器发送的JSP页面中使用它。
@RenderMapping(params ="myaction=showDetails")
public String showPartnerDetails(@ModelAttribute("reportModel") ReportSettingModel reportModel,RenderRequest req, RenderResponse res,ModelMap map){
List<String> reportsList=portalService.getReportsList();
reportModel.setReportDisplayName(reportsList);
reportModel.setComments("Test");
map.addAttribute("reportModel", reportModel);
}
现在,当我在jsp页面中做一些更改时(比如为输入字段提供输入,选择下拉列表等),当我单击Submit按钮时,在CommandName/modelAttribute属性的帮助下,我再次将相同的(更新的)模型发送到controller中的另一个方法,在控制器中,我能够成功地接收到这个模型属性,但是我丢失了模型属性中先前存在的所有数据(来自同一控制器中的前一个方法)——我仍然能够获得我在jsp中完成的新数据字段(如为输入字段提供输入、选择下拉列表等)控制方法。
示例JSP:
<form:form name="reportSetup" id="reportSetup" action="" class="form-horizontal" commandName="reportModel" method="post">
....
</form>
第二种方法:
@RenderMapping(params = "myaction=getreportSetup")
public String getReportSetup(@ModelAttribute("reportModel") ReportSettingModel reportModel, RenderRequest req,
RenderResponse res, ModelMap map){
//here in reportModel, I am getting only data of elements which I have changed in JSP page, but not the fields data which I have calculated in the above showPartnerDetails method
portalService.getReportFields(req,res,map,reportModel);
}
这种行为是意料之中的。Spring并不像你描述的那样工作。您放在模型中的数据不会在会话或其他东西中持久化。
所发生的事情是,当您填充模型时,它将被发送到JSP。JSP将使用数据来呈现表单并填充所有字段,模型将“丢失”。当您点击submit时,所有字段都被收集到服务器,服务器将根据请求数据组合成一个模型对象。请求中没有的内容将不在模型中。
如果您想保留一些值,您需要在表单中使用隐藏字段将它们放入提交请求中。当然,你可以通过这种方式“保存”的数据量是有限的。通常,您通过这种方式保存一些ID,因为您不想让用户看到它们,但您可能需要它们来提取一些数据。
枚举,值列表。。。他们需要经常换新衣服。如果要选择此选项,请在服务层上使用缓存。
我正在尝试将一个jsp表单放入fancybox,我的站点功能正常,所以我知道我的大部分配置都是正确的。我还做了一个图像的样例测试,它工作得很好,但是对于一个表单,我有问题。下面是代码:
问题内容: 我有一个角度复位功能,可以清除表单中的所有字段。如果我做类似的事情: 一切正常。但我想将此功能用于网站上的多种表单。如果我像这样传递表单对象: 那就行不通了。有人可以向我解释为什么会这样吗? 问题答案: 您有2个问题: 您没有访问传入的变量,而是仍访问当前作用域。 当您将参数传递给函数时,它通过引用传递。即使在使用时,它也不起作用,因为它仅更改 参数 的引用,而不更改传入的引用。 尝试
在用户单击重置按钮时,表单会被重置。使用type 特性值为"reset"的<input>或<button>都可以创建重置按钮,如下面的例子所示。 <!-- 通用重置按钮 --> <input type="reset" value="Reset Form"> <!-- 自定义重置按钮 --> <button type="reset">Reset Form</button> 这两个按钮都可以用来重置表
问题内容: 嗨,我有一个表格,单击按钮后会更新。 项目更新后,不会删除表单字段中输入的信息。我想知道在udpat后可以在angularjs中添加什么以添加上述代码,以便它也可以清除。谢谢 问题答案: 您可以通过以下方式重置表单,但是如果要将模型对象绑定到输入,则还需要注意清除这些输入,即: 编辑 正如ToodoN-Mike所指出的,不要忘记设置 该标志以角度1.3引入。
问题内容: 我正在尝试使用angularjs进行验证表单,到目前为止我做得很好。但是,当我提交我的重置按钮时,除了我从验证部分得到的错误消息之外,所有字段都会重置。重置表单时如何摆脱所有字段和错误消息。 当我按下重置按钮时就是这样 这是我的代码 我的控制器 问题答案: 重置时: 去掉 这是表单控制器的Angular 文档。
问题内容: 我想在调用ajax函数后重置表单。这是我在jquery中给出的代码: 这是表格的ID。但是,当我使用此代码时,我收到了这样的错误消息。 在我的html中,我将ID设置为如下形式: 那么我的代码有什么问题呢? 问题答案: 在jQuery中 用Java语言编写