2010-03-30 21 views

risposta

62
<%@ page import = "java.util.Map" %> 
Map<String, String[]> parameters = request.getParameterMap(); 
for(String parameter : parameters.keySet()) { 
    if(parameter.toLowerCase().startsWith("question")) { 
     String[] values = parameters.get(parameter); 
     //your code here 
    } 
} 
+3

buona risposta. Una osservazione però, non dovresti iterare una mappa come questa, dovresti usare qualcosa come \t \t \t \t per (Entry paramEntry: parameters.entrySet()) –

+0

Che vantaggio dà questo approccio sopra? – Finbarr

+1

Prestazioni. Nel primo approccio, si scorre le chiavi e si esegue una ricerca per ogni chiave. In pratica, non c'è una grande differenza nelle prestazioni, specialmente per i parametri di richiesta che è una piccola mappa. Tuttavia, si consiglia di evitare la ricerca, se possibile. –

5

Questo dovrebbe stampare tutti i parametri che iniziano con "Domanda".

<html><body> 
<%@ page import = "java.util.*" %> 
<b>Parameters:</b><br> 
<% 
    Enumeration parameterList = request.getParameterNames(); 
    while(parameterList.hasMoreElements()) 
    { 
    String sName = parameterList.nextElement().toString(); 
    if(sName.toLowerCase.startsWith("question")){ 
     String[] sMultiple = request.getParameterValues(sName); 
     if(1 >= sMultiple.length) 
     // parameter has a single value. print it. 
     out.println(sName + " = " + request.getParameter(sName) + "<br>"); 
     else 
     for(int i=0; i<sMultiple.length; i++) 
      // if a paramater contains multiple values, print all of them 
      out.println(sName + "[" + i + "] = " + sMultiple[i] + "<br>"); 
    } 
    } 
%> 
</body></html> 
28

Anche se questa è una vecchia questione, che dovevo fare qualcosa di simile oggi, ma io preferisco JSTL:

<c:forEach var="par" items="${paramValues}"> 
    <c:if test="${fn:startsWith(par.key, 'question')}"> 
${par.key} = ${par.value[0]}; //whatever 
    </c:if> 
</c:forEach> 
+0

Inoltre è possibile utilizzare $ {par.key.startsWith ('domanda')} invece di fn: startsWith(). – Cherry

0

Il modo più veloce dovrebbe essere:

<%@ page import="java.util.Map" %> 
Map<String, String[]> parameters = request.getParameterMap(); 
for (Map.Entry<String, String[]> entry : parameters.entrySet()) { 
    if (entry.getKey().startsWith("question")) { 
     String[] values = entry.getValue(); 
     // etc. 

Si noti che è impossibile fare:

for (Map.Entry<String, String[]> entry : 
    request.getParameterMap().entrySet()) { // WRONG! 

per motivi spiegati here.

0
HTML or Jsp Page   
<input type="text" name="1UserName"> 
<input type="text" name="2Password"> 
<Input type="text" name="3MobileNo"> 
<input type="text" name="4country"> 
and so on... 
in java Code 

SortedSet ss = new TreeSet(); 
Enumeration<String> enm=request.getParameterNames(); 
while(enm.hasMoreElements()) 
{ 
    String pname = enm.nextElement(); 
    ss.add(pname); 
} 
Iterator i=ss.iterator(); 
while(i.hasNext()) 
{ 
    String param=(String)i.next(); 
    String value=request.getParameter(param); 
} 
+0

Per favore spiega il tuo codice –

0
localhost:8080/esccapp/tst/submit.jsp?key=datr&key2=datr2&key3=datr3 

    <%@page import="java.util.Enumeration"%> 

    <% 
    Enumeration in = request.getParameterNames(); 
    while(in.hasMoreElements()) { 
    String paramName = in.nextElement().toString(); 
    out.println(paramName + " = " + request.getParameter(paramName)+"<br>"); 
    } 
    %> 

    key = datr 
    key2 = datr2 
    key3 = datr3