bagaimana cara melakukan pengikatan pada parameter permintaan beranotasi Spring?

saya memiliki pengontrol yang menggunakan anotasi untuk pemetaan permintaan dan requestParam.

pengontrolnya berfungsi dengan baik. Namun ketika mengirimkan objek perintah dengan array, pegas akan mengatakan indeks array di luar batas. saya kira ada yang salah dengan penjilidan tetapi tidak tahu cara memperbaikinya.

untuk lebih spesifik, di Eclipse saya akan mengatur debugger di awal pengontrol, dan ketika mengirimkan formulir (dengan menekan tombol kirim masukan) debugger gerhana tidak akan terpicu dan saya akan melihat indeks array di luar batas kesalahan di konsol.

pengontrolnya kira-kira seperti ini:

@RequestMapping(value = {"/internal/pcsearch.dex", "/external/pcsearch.dex"},
        method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView executeProductCatalogSearch(
        HttpServletRequest request,             
        @RequestParam(value = "cat" ,required = false) String cat,          
        @RequestParam(value = "brand" ,required = false) String brand,
        @ModelAttribute("command") ProductCatalogCommand cmd
        ){

[edit] dan jspnya seperti:

<form name="pForm" 
id="pForm" 
action="<c:url value="psearch.dex"><c:param name="cat" value="${cat}"/></c:url>" 
method="POST" 
style="display:inline;">
...
...
<c:forEach var="model" items="${models}" varStatus="modelLinkStatus">
        <script>
            var modelImg<c:out value="${modelLinkStatus.index}"/>Src = '<c:out value="${model.altModelImage}"/>';
        </script>
        <spring:bind path="command.models[${modelLinkStatus.index}].modelSkusDisplayed">
        <input type="hidden" name="<c:out value="${status.expression}"/>" id="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/>
        </spring:bind>  
<spring:bind path="command.updateCartButton">
                                        <input type="submit" value="<spring:message code="orderEntryMessages.ecatalog.button.addToCart" text="Add to Cart" htmlEscape="yes" />" name="<c:out value="${status.expression}"/>" id="<c:out value="${status.expression}"/>" class="sub_buttons"/>
                                    </spring:bind>

...

dan objek perintah mendeklarasikan array model sebagai:

private List<ModelLink> models = new ArrayList<ModelLink>();

di mana modelLink adalah ds khusus.

tag foreach pertama menangani objek perintah model dan bagian kedua adalah tombol kirim yang saya klik.


person Richard Hsu    schedule 03.10.2012    source sumber
comment
dapatkah Anda memposting kelas ProductCatalogCommand, dan mungkin formulir jsp Anda.   -  person Jigar Parekh    schedule 04.10.2012


Jawaban (1)


Saya pikir Anda harus menggunakan AutoPopatingList sebagai model untuk mengikat daftar ke tampilan dan pengontrol. misalnya silakan rujuk tautan. Ini mungkin menyelesaikan masalah indeks Anda.

person Jigar Parekh    schedule 04.10.2012