Получение значения из URL запроса - PullRequest
2 голосов
/ 02 сентября 2010

У меня есть URL, который будет вызывать метод мой метод в Java.Это выглядит так:

http://www.example.com/method?value=24

Как я могу получить значение 24 и использовать его в моем вызываемом методе?

Ответы [ 5 ]

7 голосов
/ 02 сентября 2010

ОК, способ доступа к параметру запроса в калитке такой:

final Request request = RequestCycle.get().getRequest();
final String valueAsString = request.getParameter("value");
int value = Integer.parseInt(valueAsString);

Но обычно вам не нужно этого делать, поскольку вы передаете параметры с помощью BookmarkablePageLinks с объектами PageParameters и считывайте эти объекты из конструкторов страниц .Прочтите эту страницу для некоторых материалов по закладкам в Wicket .

6 голосов
/ 03 сентября 2010

Я предполагаю, что вы создаете число - «24» - в своем Java-коде, поскольку вы говорите, что используете Wicket.

Таким образом, как уже сказал seanizer, в 99% случаев вам не нужно анализировать URL-адрес запроса, чтобы получить значение, что-то вроде этого должно быть достаточно:

public class MyPage extends WebPage {
   public MyPage() {
      // your number is generated somehow
      final int value = 24;

      this.add(new Link<Integer>("myLink") {
         @Override
         public void onClick() {
            // do something with the value
            int newValue = value * 2;
         }
      }
   }
}

или - с моделями - вот так

public class MyPage extends WebPage {
       public MyPage() {
          // your number is generated somehow
          int value = 24;

          Model<Integer> model = new Model<Integer>(value);

          this.add(new Link<Integer>("myLink", model) {
             @Override
             public void onClick() {
                // your '24'
                Integer value = this.getModelObject();
                // do something with the value
                int newValue = value * 2;
             }
          }
       }
    }

Если вам действительно, действительно, ДЕЙСТВИТЕЛЬНО действительно нужен параметр из URL, я думаю, это то, что вы хотите:

public class MyPage extends WebPage {
       public MyPage(PageParameters parameters) {
          // your number is generated somehow
          Integer value = parameters.getAsInteger("value");
       }
    }

В зависимости от того, как вы настроили свое приложение, вам может потребоваться соответственно реализовать другие конструкторы.

Удачи.

0 голосов
/ 07 мая 2011

Один из:

  1. на закладке, создающей закладку, создайте конструктор с единственным аргументом PageParameters и получите оттуда значение: p.getString ("value") или p.getInt ("value)
  2. также уровень страницы, но если у вас нет этого конструктора или, например, в компоненте: getPage (). getPageParameters () и получить его оттуда
  3. из любого компонента, getRequest (). GetParameter ("value") (или используйте взамен Request.get ())

Есть еще больше способов получить это, но это самые простые.

0 голосов
/ 02 сентября 2010

Примерно так:

public class ExampleServlet extends HttpServlet {

   /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
   protected void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

       String s = request.getParameter("value");
       int value = 0;
       try {
            value = Integer.parseInt(s);
       } catch(NumberFormatException nfe) {
            nfe.printStackTrace();
       }
   }
}
0 голосов
/ 02 сентября 2010

Если вы используете сервлеты, вы можете использовать

ServletRequest.getParameter (...)

Если вы используете JSP, вы можете использовать requestнеявный объект

request.getParameter (...)

...