使用select作为spring形式的参数的值来获取id的对象

时间:2014-05-24 13:34:57

标签: jquery forms spring jsp java-ee

当我从表单中的选择框中选择一个选项时,我希望每次选择更改时,获取表单的输入字段以填充上面选择的对象中的值。其目的是在创建后修改对象。我正在使用Spring MVC和Hibernate与JDBCTemplate。

listaProiecte is a List<Proiect> 

以下是表格:

    <form:form method="post" id="modifica" action="/modifica" commandName="proiect">

    <div class="input-group col-md-12">

        <div class="input-group col-md-12">

            <div class="col-md-12"><br/></div>

            <div class="col-md-12">
                <span>           </span>
                <sform:select path="idProiect" id="idProiectSelect"  cssClass="form-control input-sm">
                    <sform:option value="0" label="--- Select ---"/>
                    <c:forEach items="${listaProiecte}" var="proj">
                        <sform:option var="id" id="optiune"  value="${proj.idProiect}" label="${proj.nrProiect}  ${proj.numeProiect}"/>
                    </c:forEach>
                </sform:select>
            </div>
            <div class="col-md-12"><br/></div>
            <div class="col-md-12">

                <span>Nume Proiect</span>
                <sform:input path="numeProiect" id="numeProiectInput" cssClass="form-control input-sm"/>
            </div>
            <div class="col-md-12"><br/></div>
            <div class="col-md-12">
                <span>Numar Proiect</span>
                <sform:input path="nrProiect" id="nrProiectInput" cssClass="form-control input-sm"/>
            </div>
            <div class="col-md-12"><br/></div>
            <div class="col-md-12">
                <span>An</span>
                <sform:input path="an" id="anInput" cssClass="form-control input-sm"/>
            </div>
            <div class="col-md-12"><br/></div>
            <div class="col-md-12">
                <span>Client</span>
                <sform:select path="idClient" id="idClientInput" cssClass="form-control input-sm">
                    <option value="0" label="--- Select ---"/>
                    <c:forEach items="${listaClienti}" var="clnt">
                        <sform:option value="${clnt.idClient}" label="${clnt.client}"/>
                    </c:forEach>
                </sform:select>
            </div>
            <div class="col-md-12"><br/></div>
            <div class="col-md-12">
                <button type="submit" class="btn " id="btnMod">
                    Modifica Proiect
                </button>
            </div>
        </div>
    </div>
</form:form>

控制器:

 @Qualifier("listaProiecteDAO")
    @Autowired
    private ListaProiecteJDBCDAO listaProiecteJDBCDAO;
    @Qualifier("clientiDAO")
    @Autowired
    private ClientiJDBCDAO clientiJDBCDAO;

    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    public String proiecte(ModelMap map) {

        map.addAttribute("proiect", new ListaProiecte());
        map.addAttribute("listaProiecte", listaProiecteJDBCDAO.getAll());
        map.addAttribute("client", new Client());
        map.addAttribute("listaClienti", clientiJDBCDAO.getAll());

        return "admin";
    }
     @RequestMapping(value = "/modifica", method = RequestMethod.POST)
    public String moddProiect(@ModelAttribute(value = "proiect") ListaProiecte proiect, BindingResult result) {

        listaProiecteJDBCDAO.update(proiect);
        return "redirect:/admin#modProj";
    }

我试图在select:

的change()事件中使用JS
 $("#idProiectSelect").change(function(){
    var id = $("#idProiectSelect").val();
   $("#numeProiectInput").val(${listaProiecte[id].numeProiect});
   $("#nrProiectInput").val(${listaProiecte[id].nrProiect);
   $("#anInput").val(${listaProiecte[id].an);
   $("#idClientInput").val(${listaProiecte[id].idClient);

});

显然,ecmascript中的EL并不起作用。这是一个什么解决方法? 如何使用选择框中的id作为我的List的参数?

1 个答案:

答案 0 :(得分:0)

建议使用freemarker和下面提到的代码也是如此。

这将在服务端添加对象列表到模型对象。

@RequestMapping("/show")
    public String showFeesPage(Model model){
        model.addAttribute("batchlist", commonService.getBatchList());
        model.addAttribute("feeslist", commonService.getFeesList());
        return "fees";
    }

下面提到的你将在freemarker页面中添加。

<#list batchlist as batch>

    <option value="${batch.id}">${batch.batchName}</option>

</#list>