2017-04-11 1 views
0

Ich arbeite an meinem aktuellen Projekt-Modul, die Excel-Blatt-Änderung durch den Benutzer ist, und ich bin auf dem Erhalten von Dynamic <td> Wert.Wie bekomme ich dynamischen td-Wert in Spring-Controller ohne Eingabe-Tag

MY JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
<%@ page session="true"%> 
<html> 
<head> 
<style type="text/css"> 
</style> 
</head> 
<body> 
    <form action="save" method="post" id="exceldata"> 
     <table border="5" id="dataTable"> 
      <tbody> 
       <c:forEach var="data" items="${Hello.userlist}" varStatus="loop"> 
        <tr> 
         <c:forEach var="innerData" items="${data}"> 
          <td id="innerData" contenteditable="true"> 
          <c:out value="${innerData}"></c:out></td> 
          // ${innerData} will be updated by user 
          //here i need updated td ${innerData} data 
          //i have done all the possible R&D in 2days 
          // i can not use <input> under <td> 
         </c:forEach> 
        </tr> 
       </c:forEach> 
      </tbody> 
     </table> 
     <input type="hidden" value="${sizeOfData}" name="sizeOfData"> 
     <input type="submit" value="save"> 
    </form> 
</body> 
</html> 

mein Controller:

hier in der mein Controller-Klasse und in der Saveexcel muss ich den td td Wert aktualisiert

Excel_Data ed = new Excel_Data(); 

@RequestMapping("/") 
public ModelAndView showExcel() { 
    List ll = ed.readData(FILE_NAME); 

    lb.setUserlist(ll); 
    home.addObject("sizeOfData", ll.size()); 
    home.addObject("Hello", lb); 
    return home; 
} 
@RequestMapping(value = "/save", method = RequestMethod.POST) 
public ModelAndView saveExcel(@ModelAttribute("userForm") ListBean lb) throws IOException { 
    // what to do here? 
} 
} 

I verwendet haben <input type="hidden" value=${innerData} name="innerData"> , aber es sendet keine aktualisierten Daten

+0

thnks für die Code-Formatierung @nnnnnn – Prabhakar

+0

Es scheint wie eine gute Arbeit für JavaScript –

+0

haben Sie versucht,

Antwort

0

Basierend auf Ihrer Frage scheint es, als ob Sie versuchen, Excel wie Funktionalität zu erstellen. Mehr als eine Zelle kann geändert werden und Änderungen müssen zurück an den Server gesendet werden.

Wenn Formular gesendet wird, können Sie alle Zellen mit Javascript durchlaufen und ein JSON-Objekt erstellen. Zum Beispiel folgende sudo Code

var cells = new Object(); 
for every cell 
    celss[cell id] = <text content of the cell> 
end for 

var cellText = JSON.stringify(cells) 
set the value of hidden field 

Auf Serverseite benötigt Ihre Methode Eingabefeld erwartet haben @RequestParam Annotation verwenden. Sie können Gson oder solche Tools zum Parsen der Daten verwenden. Wenn Sie einer guten ID-Konvention folgen, z. ID kann "ID__" sein, Sie können es analysieren, um herauszufinden, wohin der Inhalt geht.

+0

danke, es ist gut und gut, ich habe Daten über Ajax gesendet, aber jede Zeile kam zufällig nicht herein Sequenz, aber JSON.stringify (Zellen) wird gute Arbeit bro arbeiten – Prabhakar

0

Das Formular sollte mit ModelAttribute erwähnt werden, das die Werte des Formulars einmal nach dem Speichern in diesem Objekt speichert.

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
 
<form:form method="POST" id="form" name="form" class="form" 
 
\t \t action="${pageContext.request.contextPath}/home/page2/submit" 
 
\t \t modelAttribute="data"> 
 
    <table border="5" id="dataTable"> 
 
      <tbody> 
 
       <c:forEach var="data" items="${Hello.userlist}" varStatus="loop"> 
 
        <tr> 
 
         <c:forEach var="innerData" items="${data}"> 
 
          <td id="innerData" contenteditable="true" path="name"> 
 
          <c:out value="${innerData}"></c:out></td> 
 
          
 
         </c:forEach> 
 
        </tr> 
 
       </c:forEach> 
 
      </tbody> 
 
     </table> 
 
     <input type="hidden" value="${sizeOfData}" name="sizeOfData" path="name"> 
 
     <input type="submit" value="save"> 
 
    
 
</form:form>

Eine Klasse sollte

public class Data { 
String name; 
public void setName(String name) { 
    this.name = name; 
} 
public String getName() { 
    return name; 
}} 

-Controller haben die folgenden Methoden, wie folgend in Modellpaket des Projekts erstellt werden, @RequestMapping (value = "/ method2/einreichen ", method = RequestMethod.GET) public String-Methode3 (ModelMap-Modell, HttpSession-Sitzung, HttpServletRequest-Anforderung) {

model.addAttribute("data",new Data()); 
    return VIEWS_LOCATION +"/secondPage"; 
} 
@RequestMapping(value="/method2/submit",method = RequestMethod.POST) 
public String method3(ModelMap model, @ModelAttribute("data") Data data) { 
    model.addAttribute("name",data.getName()); 

    return VIEWS_LOCATION +"/secondPage"; 
} 

Alle Elemente, die suffixed mit path = "name" sind, werden automatisch vom Datenmodell gelesen und im String-Namen gespeichert.

Verwandte Themen