2016-08-05 32 views
0

當我將值jsp返回給contoller updateuser方法時,我在以下類中創建了commonMonth的值,該值在monthlyMemberSatus列表中顯示爲空值。我不知道什麼是我的代碼中的錯誤...幫助我如何將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」),所以你需要先定義第一個知道spring控制器與模型屬性具有名稱「月」

也嘗試添加輸入標籤像下面代替路徑

<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),但仍名單值爲null – Manihtraa

+0

你能只是檢查您的網絡電話,什麼樣的數據傳遞,當你提交表格,如果你使用的是chrome而不是按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

由於我無法在評論字段中更新它,所以將它發佈在Answer字段中。這裏不用我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> 
相關問題