Получить все параметры с страницы JSP без request.getParameters () [duplicate]

Другой общий случай, когда можно получить это исключение, включает в себя насмешливые классы во время модульного тестирования. Независимо от используемой насмешливой структуры, вы должны убедиться, что все соответствующие уровни иерархии классов должным образом высмеиваются. В частности, все свойства HttpContext, на которые ссылается тестируемый код, должны быть изделены.

См. « Исключение NullReferenceException при проверке пользовательского AuthorizationAttribute » для несколько подробного примера.

30
задан Michael Myers 8 April 2010 в 23:10
поделиться

6 ответов

<%@ 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
    }
}
65
ответ дан cuSK 27 August 2018 в 23:31
поделиться
  • 1
    хороший ответ. Одно замечание, однако, вы не должны перебирать такую ​​карту, вы должны использовать что-то вроде (Entry & lt; String, String [] & gt; paramEntry: parameters.entrySet ()) – Victor Ionescu 4 April 2013 в 07:55
  • 2
    Какое преимущество дает этот подход выше? – Finbarr 5 April 2013 в 00:11
  • 3
    Представление. В первом подходе вы перебираете ключи и выполняете поиск для каждого ключа. На практике нет большой разницы в производительности, особенно для параметров запроса, которые представляют собой крошечную карту. Тем не менее, рекомендуется избегать поиска, если сможете. – Victor Ionescu 10 April 2013 в 10:22
  • 4
    Фактически поиск выполняется только для ключей, начинающихся с "question", но, как вы говорите, это теоретически медленнее, чем повторение записей. – Finbarr 10 April 2013 в 17:43
  • 5
    Почему Java-код не используется в тегах scriptlet? – Noumenon 26 September 2016 в 11:00

Самый быстрый способ:

<%@ 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.

Обратите внимание, что вы не можете делать:

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

по причинам, объясняемым здесь .

0
ответ дан Community 27 August 2018 в 23:31
поделиться

Хотя это старый вопрос, мне сегодня нужно было сделать что-то подобное, но я предпочитаю 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>
29
ответ дан Filipe Pina 27 August 2018 в 23:31
поделиться
  • 1
    Также вы можете использовать $ {par.key.startsWith ('question')} вместо fn: startsWith (). – Cherry 10 January 2014 в 08:03

Это должно распечатать все параметры, начинающиеся с «Вопрос».

<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>
6
ответ дан lajuette 27 August 2018 в 23:31
поделиться
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
ответ дан Nilesh 27 August 2018 в 23:31
поделиться
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
1
ответ дан Pax Exterminatus 27 August 2018 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: