我有一个URL,它将在Java中调用方法my方法。它看起来像这样:
http://www.example.com/method?value=24
如何检索值24
并在我调用的方法中使用它?
答案 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)
答案 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)
其中一个:
还有更多方法可以获得它,但这些方法最直接。