这是控制器
@RequestMapping(value = "/submitrule", method = RequestMethod.POST)
public String addruleSerch(@ModelAttribute("SpringWeb") Rule obj2, ModelMap model) {
model.addAttribute("Select", obj2.getId());
System.out.println("********" + obj2.getId());
ruleApi.getRule(obj2.getId());
model.addAttribute("listrule", ruleApi.getRule(obj2.getId()));
return "redirect:/hello";
}
这是html ....
<form action="/CommissionTool/submitrule" method="post">
<table>
<tr>
<td><select name="Select"><c:forEach items="${listRules}" var="rule">
<option value="${rule.id}">
<c:out value="${rule.id}" />
</option>
</c:forEach>
</select>
</td>
<td><input type="submit" onClick="addRow('in_tbl_name')" VALUE="Add New"></td>
</tr>
</table>
</form>
我怎么能解决这个问题..请帮助我 在此先感谢...
答案 0 :(得分:0)
您需要对代码进行一些更改,但非常接近。
您需要在第一次将要用作modelAttribute的对象发送到视图。
在你的html中你需要对作为要渲染的对象的表单说出你的模型属性
在控制器中创建一个POST方法以检索对象
让我们把这一切放在这个例子中。我有一个名为RuleForm的类,它包含Rule类型的属性。
public class RuleForm {
...
@Getter @Setter //here use lombok, but you could create your getters-setters methods
private Rule rule;
...
}
现在在控制器中,我们将GAP方法设置为视图解析器(JSP)和我们将发送到那里的对象。在这种情况下,FormRule
类型的对象@RequestMapping(value = "/submitrule", method = RequestMethod.GET)
public ModelAndView addruleSerch() {
ModelAndView model = new ModelAndView("yourView");
//here you choose the name you will use in your view, is up to you the name to choose
model.addObject("formRule", new FormRule());
return model;
}
现在我们需要选择我们发送到视图的对象并将其用于我们的表单标记。
<form action="/CommissionTool/submitrule" method="post" model="formRule">
...
<select name="rule.id"><c:forEach items="${listRules}" var="rule">
<option value="${rule.id}">
<c:out value="${rule.id}" />
</option>
</c:forEach>
</select>
在这一点上,当我们将表单发送到Controller时,我们会将带有值的RuleForm对象发送到rule.id对象,然后在控制器中我们必须获取该id值并添加业务逻辑。
@RequestMapping(value = "/submitrule", method = RequestMethod.POST)
public String addruleSerch(@ModelAttribute RuleForm ruleForm) {
//Here you will have access to your object
ruleForm.getRule().getId();// rule selected in the form
... your business logic
return "redirect:/someUrl";
}