从请求URL中检索值

jim*_*mmy 2 java url wicket

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

http://www.example.com/method?value=24
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*oyd 7

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

final Request request = RequestCycle.get().getRequest();
final String valueAsString = request.getParameter("value");
int value = Integer.parseInt(valueAsString);
Run Code Online (Sandbox Code Playgroud)

但通常您不必这样做,因为您通过使用带有PageParameters对象的BookmarkablePageLinks传递参数,并从页面构造函数中读取这些对象.阅读此页面,了解Wicket中Bookmarkable Links的一些资料.

  • 阅读"Wicket in Action"更有用:http://www.manning.com/dashorst/ (4认同)

LeC*_*Che 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;
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

或 - 与模特 - 像这样

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;
             }
          }
       }
    }
Run Code Online (Sandbox Code Playgroud)

如果你真的,真的,真的,确实需要URL中的参数,我想这就是你想要的:

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

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

祝好运.