2017-02-05 38 views
1

我正在使用Javascript函數生成以下輸入文本框。每個文本框都有一個唯一的ID,這個ID將被遞增,以及唯一的名字如下。在java中控制器端處理動態生成的表單元素

<input type="text" class="form-control" indexed="true" id="skills_0" name="skills_0"> 
<input type="text" class="form-control" indexed="true" id="skills_1" name="skills_1"> 
<input type="text" class="form-control" indexed="true" id="skills_2" name="skills_2"> 

我想在我的控制器的這個文本框中檢索用戶填充的值。我正在使用Hibernate框架。 通常在Hibernate中我用來檢索值如下:

String name=request.getParameter("name"); 

但我很困惑如何在控制器side.Also檢索該動態生成的文本框的值,我怎麼能知道有多少技能是由添加用戶在我的控制器?即是多少文本框是由用戶在運行時產生的..

+0

要麼爲每個輸入生成具有不同「名稱」的輸入,要麼遍歷請求中所有參數的列表,並檢查是否有您需要的參數。 –

+0

是的我編輯了我的問題我也可以爲每個動態生成的文本框分配唯一的名稱...但是接下來的問題是我怎麼知道用戶在服務器端生成了多少文本框 – user7324139

+0

只需遍歷所有參數,然後檢查你需要的一個。 –

回答

0

http中的<form>是發送使用輸入的唯一名稱屬性:

<input name="someName" value="someValueOfsomeNameInput"/>

所以要求它通常看起來像...&someName=someValueOfsomeNameInput - 發送請求時根本不使用「id」。

要麼爲每個輸入生成具有不同「名稱」的輸入,要麼遍歷請求中所有參數的列表,並檢查是否有您需要的參數。

所有來自輸入的參數都將被髮送,所以爲了獲得列表,您可以爲名稱添加一些前綴,並檢查參數是否以此唯一前綴開頭,以便您可以通過此前綴將它們組合在一起。您也可以嘗試爲每個參數設置相同的「名稱」,然後也許他們會列在一起。這是一段代碼,它遍歷請求中的所有參數,用它來檢查請求中的參數以及它們的結構。

public void sysoRequestParameters(HttpServletRequest req) throws IOException { 

       Enumeration<String> parameterNames = req.getParameterNames(); 
       while (parameterNames.hasMoreElements()) { 
        String paramName = parameterNames.nextElement(); 
        System.out.println("--------------------------"); 
        System.out.println("parameter name = " + paramName); 
        String[] paramValues = req.getParameterValues(paramName); 
        System.out.println("parameter values:"); 
        for (int i = 0; i < paramValues.length; i++) { 
         String paramValue = paramValues[i]; 
         System.out.println(paramValue); 
        } 
       } 
       out.close(); 
      } 

    } 
相關問題