Проверьте, равен ли параметр запроса строке в Java - PullRequest
2 голосов
/ 09 января 2011

Я хочу сделать это в Java

if(request.getParameter("page") == "page1")
// page1
else if(request.getParameter("page") == "page2")
// page2

Для кого-то новичка в Java, почему не работает приведенный выше код, и как лучше всего сделать то, что я хочу сделать выше?

Ответы [ 2 ]

10 голосов
/ 09 января 2011

Поскольку String является объектом, а не примитивом, == будет сравнивать их только по ссылке, а не по внутреннему представлению объекта.Вместо этого вам нужно сравнить их на equals().

if("page1".equals(request.getParameter("page")))
// do something
else if("page2".equals(request.getParameter("page")))
// do something else

(обратите внимание, этот стиль сделан таким образом, чтобы предотвратить потенциальное включение NullPointerException, например request.getParameter("page").equals("page1") припараметр возвращает null)

Смежные вопросы:


Независимо от проблемы, JSP - не лучшее место для этой работы.Рассмотрим Сервлет .

1 голос
/ 09 января 2011

Вы используете неправильные равные. Попробуйте это:

  if(request.getParameter("page") != null) {
    if(request.getParameter("page").equals("page1")) {
         // do stuff
    } else if(request.getParameter("page").equals("page2")) {
         // do other stuff
    }
  }

== сравнивает ссылки на объекты, чтобы увидеть, равны ли они, тогда как .equals проверяет, равны ли значения этих ссылок на объекты.

...