从请求URL中检索值

时间:2010-09-02 08:03:45

标签: java url wicket

我有一个URL,它将在Java中调用方法my方法。它看起来像这样:

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

如何检索值24并在我调用的方法中使用它?

5 个答案:

答案 0 :(得分:7)

好的,在wicket中访问请求参数的方法是:

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

但通常您不必这样做,因为您通过BookmarkablePageLinks使用PageParameters对象传递参数,并从page constructors读取这些对象。请阅读此页面,了解Bookmarkable Links in Wicket上的一些资料。

答案 1 :(得分:6)

我假设您在Java代码中创建了数字 - “24” - 因为您说您正在使用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");
       }
    }

根据您配置应用程序的方式,您可能需要相应地实现其他构造函数。

祝你好运。

答案 2 :(得分:0)

如果您使用的是Servlet,则可以使用

ServletRequest.getParameter(...)

如果使用JSP,则可以使用request隐式对象

request.getParameter(...)

答案 3 :(得分:0)

这样的事情:

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();
       }
   }
}

答案 4 :(得分:0)

其中一个:

  1. 在可收藏页面中,使用单个参数PageParameters创建构造函数并从中获取值:p.getString(“value”)或p.getInt(“value)
  2. 也是页面级别但是如果你没有那个构造函数或者例如在一个组件中:getPage()。getPageParameters()并从那里得到它
  3. 来自任何组件的
  4. ,getRequest()。getParameter(“value”)(或者使用Request.get())
  5. 还有更多方法可以获得它,但这些方法最直接。