2016-08-05 15 views
0

jspという値をcontoller updateuserメソッドに返すと、commonMonthの値がmonthlyMemberSatusリストのnull値を表示します。私は助けて...私のコードに誤りが何であるかを知らない私jspのリスト値をコントローラに送る方法

コントローラー:

@RequestMapping(value = "/tempOpen",method = {RequestMethod.POST, RequestMethod.GET}) 
public ModelAndView monthMemberList(@ModelAttribute("commanMonth") CommanMonth commanMonth) { 
    commanMonth.setMonthlyMemberStatus(dataService.listMonthMember()); 
    return new ModelAndView("hlo","commanMonth",commanMonth); 
} 

@RequestMapping("/tempClose") 
public ModelAndView updateUser(@ModelAttribute("commanMonth") CommanMonth commanMonth) { 
    System.out.println(month.getMonthlyMemberStatus()); 

    dataService.updateRow(month); 
    return new ModelAndView("hlo","commanMonth",month); 
} 

モデルクラス:

public class CommanMonth { 
private List<MonthlyMemberStatus> monthlyMemberStatus; 
public List<MonthlyMemberStatus> getMonthlyMemberStatus() { 
    return monthlyMemberStatus; 
} 

public void setMonthlyMemberStatus(List<MonthlyMemberStatus> monthlyMemberStatus) { 
    this.monthlyMemberStatus = monthlyMemberStatus; 
} 

JSPページ:hlo.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
${commanMonth} 
<form:form modelAttribute="commanMonth" method="post" 
     action="tempClose.html"> 
     <table width="400px" height="150px"> 
      <c:forEach items="${commanMonth.monthlyMemberStatus}" var="list" varStatus="status"> 
       <tr> 
        <td><form:label path="monthlyMemberStatus[${status.index}].roomMembers.memberName" >${list.roomMembers.memberName}</form:label></td> 
        <td><form:input path="monthlyMemberStatus[${status.index}].noOffDays" value="31"/></td> 
        <%-- <td style="visibility:hidden"><form:input path="li[${status.index}].bookId" value="${list.bookId}" readonly="true"/></td> 
         <td><form:input path="temp[${status.index}].book" value="hloloo"/></td> 
        </tr> --%> 
        </c:forEach> 
        <tr> 
       <td></td> 
       <td><input type="submit" value="Update" /> 
       </td> 
      </tr> 
       </table> 
    </form:form> 
</body> 
</html> 

答えて

0

あなたはどんなgetterメソッドでも@ModelAttribute( "month")を指定していないと思うので、最初に春を知るために定義する必要がありますモデル属性を持つコントローラは、「月」も

下記の代わりにパス

<td><input name="monthlyMemberStatus[${status.index}].noOffDays" value="31"/></td> 

ノートのように入力タグを追加しようとする名前を持つ:コントローラメソッドでもを指定RequestMethod.POST

@RequestMapping(value = "/tempOpen",method = {RequestMethod.POST, RequestMethod.GET}) 
public ModelAndView monthMemberList(@ModelAttribute("commanMonth") CommanMonth commanMonth) { 
    commanMonth.setMonthlyMemberStatus(dataService.listMonthMember()); 
    return new ModelAndView("hlo","commanMonth",commanMonth); 
} 

@RequestMapping(value="/tempClose", method = RequestMethod.POST) 
public ModelAndView updateUser(@ModelAttribute("commanMonth") CommanMonth commanMonth) { 
    System.out.println(month.getMonthlyMemberStatus()); 

    dataService.updateRow(month); 
    return new ModelAndView("hlo","commanMonth",month); 
} 
+0

私は公共のModelAndView updateUser(@ModelAttribute(「commanMonth」)CommanMonth commanMonth)が、依然としてリスト値が – Manihtraa

+0

はあなたがちょうどあなたのネットワーク呼び出しを確認することができますnullであるが、ときにどのようなデータを渡して変更しましたf12>ネットワークタブ>リクエストヘッダ –

+0

f12>ネットワークタブ>リクエストヘッダ – Manihtraa

0

リクエストヘッダー ソースを表示

POST /sdnext/tempClose.html HTTP/1.1 
    Host: localhost:8080 
    Connection: keep-alive 
    Content-Length: 135 
    Cache-Control: max-age=0 
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Origin: http://localhost:8080 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML,like Gecko) Chrome/49.0.2623.112 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
Referer: http://localhost:8080/sdnext/tempOpen.html 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 
Cookie: JSESSIONID=B9D81D17E3B18B75494CBF8517B15995 
Form Data 
view source 
view URL encoded 
monthlyMemberStatus0.noOffDays:24 
monthlyMemberStatus1.noOffDays:31 
monthlyMemberStatus2.noOffDays:31 
monthlyMemberStatus3.noOffDays:31 
+0

あなたのメソッドはデフォルトでGETなので、コントローラにRequestMethod.POSTを指定する必要があります。メソッド...私の答えを見てください(別の回答タブを掲示するのではなく、答えにコメントを追加することができます) –

+0

私はgetメソッドを試しても、それも動作しません。あなたの返信を熱心に待っている解決策を手に入れてください。 – Manihtraa

+0

ここに参考になります。http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/ –

0

コメントフィールドで更新できなかったため、回答フィールドに投稿しました。ここに私のServlet.xml行く

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

    <context:property-placeholder location="classpath:resources/database.properties" /> 
    <context:component-scan base-package="com.room" /> 

    <tx:annotation-driven transaction-manager="hibernateTransactionManager"/> 
    <bean id="jspViewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/views/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${database.driver}" /> 
     <property name="url" value="${database.url}" /> 
     <property name="username" value="${database.user}" /> 
     <property name="password" value="${database.password}" /> 
    </bean> 

    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
     <list> 
      <value>com.room.model.RoomMembers</value> 
      <value>com.room.model.DailyExpense</value> 
      <value>com.room.model.MonthlyExpense</value> 
      <value>com.room.model.FinalSettlement</value> 
      <value>com.room.model.MemberInOut</value> 
      <value>com.room.model.SpecialExpense</value> 
      <value>com.room.model.MonthlyMemberStatus</value> 


     </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>    
      </props> 
     </property> 
    </bean> 

    <bean id="hibernateTransactionManager" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
</beans> 
関連する問題