2016-08-05 30 views
0

Ich habe die folgende Klasse, wenn ich den Wert JSP an contoller updateuser Methode den Wert von CommonMonth zeigen Nullwert in der Liste monthlyMemberSatus zurückgegeben. Ich weiß nicht, was der Fehler in meinem Code ... helfen Sie mirSo senden Sie Listenwert in JSP an Controller

Controller:

@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); 
} 

MODEL Klasse:

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

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

Jsp Seite: 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> 

Antwort

0

Ich denke, dass Sie @ModelAttribute ("Monat") in Ihrer beliebigen Getter-Methode nicht angegeben haben, also müssen Sie zuerst den Frühling kennen Controller mit Modell-Attribute hat den Namen 'Monat'

auch versuchen, Input-Tag wie unten statt Pfad

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

Notiz hinzufügen: Auch RequestMethod.POST in Controller-Methode

@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

i wurde öffentlich geändert Modelandupdateuser (@ModelAttribute („commanMonth“) CommanMonth commanMonth), aber immer noch Listenwert ist null – Manihtraa

+0

Können Sie sich Ihr Netzwerk Anruf überprüfen, welche Daten ist vorbei, wenn Sie Übermitteln Sie das Formular, wenn Sie Chrom verwenden als drücken Sie f12> Netzwerk Registerkarte> Anfrage Header –

+0

Ich angehängt Antwort abgelegt, welche Daten in f12> Netzwerk Registerkarte> Anfrage Header – Manihtraa

0

angeben Anforderungsheader Quelltext anzeigen

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

Ihre Methode ist standardmäßig GET, so müssen Sie RequestMethod.POST im Controller angegeben Methode ... schau auf meine Antwort. (Sie können einen Kommentar in der Antwort hinzufügen, anstatt eine andere Antwort-Registerkarte zu posten) –

+0

Auch ich habe versucht mit Get-Methode, es funktioniert auch nicht. Bitte erhalten Sie eine Lösung, warten gespannt auf Ihre Antwort ... – Manihtraa

+0

Hier ist eine Referenz, schauen Sie in diesem http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/ –

0

Da ich es im Kommentarfeld nicht aktualisieren konnte, so posten Sie es im Antwortfeld. Hier geht mein 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>