如何将下拉选择值传递给控制器​​中的按钮单击并搜索数据库中的值?

时间:2016-03-29 09:46:19

标签: java html

这是控制器

@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>

我怎么能解决这个问题..请帮助我 在此先感谢...

1 个答案:

答案 0 :(得分:0)

您需要对代码进行一些更改,但非常接近。

  1. 您需要在第一次将要用作modelAttribute的对象发送到视图。

  2. 在你的html中你需要对作为要渲染的对象的表单说出你的模型属性

  3. 在控制器中创建一个POST方法以检索对象

  4. 让我们把这一切放在这个例子中。我有一个名为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";
    }