

ヘッダ + データグリッドからなる画面を、Spring MVCで作っています。  
しかし、どうしてもデータグリッドに入力された内容を受け取ることが出来ません。

こんな感じのコードを書きました

[code]

    @RequestMapping(value="/updateList")
    public ModelAndView updateList(Condition condition, Grid[] grid) {
    
[/code]

Spring MVCはデータグリッドに入力された内容を、受け取ることができるのでしょうか？  
かれこれ、2日ほど調べてみたのですが、どうしてもわからずorz

画面イメージ  
![画像の説明をここに入力](https://i.stack.imgur.com/kqFWO.png)

エラー内容

> org.springframework.web.util.NestedServletException: Request processing
> failed; nested exception is  
>  org.springframework.beans.BeanInstantiationException: Failed to instantiate  
>  [[Ljp.co.test.server.arrival.form.WEB_AR_INP_010_Form$Grid;]:  
>  No default constructor found; nested exception is  
>  java.lang.NoSuchMethodException:  
>  [Ljp.co.test.server.arrival.form.WEB_AR_INP_010_Form$Grid;.()  
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)  
>
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)  
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:644)  
>
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)  
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:725)  
>  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)  
>  jp.co.test.server.framework.WebFilter.exec(WebFilter.java:79)  
>  jp.co.test.server.framework.WebFilter.doFilter(WebFilter.java:74)

例外に表示されている「L.jp.co.test」のLって、どこから来たんでしょうか？  
そもそも根本的なところで何か間違えているから、Springが「L」を付けたような気がするんです。


CC BY-SA 3.0
2015-03-06T06:33:46.420
7537
2015-03-07T06:24:40.260
2015-03-06T06:50:09.090
8247
question
java spring
データグリッドに入力された内容は、Spring MVCで受け取れない？


メソッドの引数を2つにしたのがエラーの原因だったようです。  
1つのBeanにまとめたらば、エラーが発生しませんでした。

[code]

    @RequestMapping(value="/updateList")    
    public ModelAndView updateList(Condition condition) throws IOException {
    
[/code]

* * *
[code]

    @Data
    public class Condition implements Serializable {
        private String remaks;
        private List<Grid> grid;
    }
    
    @Data
    public class Grid implements Serializable {
        private Integer rowNo;
        private String prodCode;
    }
    
[/code]

それと、Gridを自作したのですが、inputのid/nameを次のように設定しました。

[code]

       <input type="text" id="grid[0].prodCode" name="grid[0].prodCode">
       <input type="text" id="grid[1].prodCode" name="grid[1].prodCode">
       <input type="text" id="grid[2].prodCode" name="grid[2].prodCode">
    
[/code]

やったのはこれだけです。


CC BY-SA 3.0
2015-03-07T06:24:40.260
7576
2015-03-07T06:24:40.260
8247
7537
answer