gpt4 book ai didi

java - 为什么在 PageParameters 类型上使用 containsKey() 和 getString() 时出现错误?

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:20 24 4
gpt4 key购买 nike

我正在尝试使用 Java 的 Wicket 框架,并从构建一个简单的登录应用程序开始。有两个页面,即包含登录表单的login.java(和.html),以及仅显示在登录页面中输入的登录名和密码的NextPage.java(和html)。为了实现从页面传递变量,我使用了 wicket 提供的 PageParameters 类。

登录.java:

package com.myassignment;

import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.mapper.parameter.PageParameters;

public class login extends WebPage {

private Form form;
private TextField userIDField;
private PasswordTextField passwordField;


public login(){

userIDField = new TextField("user_id", new Model(""));
passwordField = new PasswordTextField("password", new Model(""));

userIDField.add(new TextValidator());
passwordField.add(new TextValidator());
userIDField.setRequired(true);
passwordField.setRequired(true);

Form form = new Form("login_form") {

@Override
protected void onSubmit() {
String USRNAME = login.this.getUsername();
String PWD = login.this.getPassword();
System.out.println("You entered USER_ID: "+ USRNAME +" and PASSWORD: " + PWD);
PageParameters para = new PageParameters();
para.add("username", USRNAME);
para.add("password", PWD);
setResponsePage(NextPage.class, para);
}
};

form.add(userIDField);
form.add(passwordField);
add(form);
}

protected String getUsername() {
return userIDField.getDefaultModelObjectAsString();
}
protected String getPassword() {
return passwordField.getModelObject();
}
}

NextPage.java:

package com.myassignment;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;


public class NextPage extends WebPage {

private Label unameLabel;
private Label passwordLabel;

public NextPage(PageParameters para) {

System.out.println(para);

String uname = ""+para;
String password = ""+para;

if(para.containsKey("uname")){
uname = para.getString("uname");
}

unameLabel = new Label("username_label", uname);
passwordLabel = new Label("password_label", password);
add(unameLabel);
add(passwordLabel);

}

}

但是,代码中存在一个错误,The method containsKey(String) is undefined for the type PageParametersThe method getString(String) is undefined for the type PageParameters 根据网络上的教程以及 apache.wicket.org 中的文档,该方法不应该存在,其中明确提到 containsKey 作为 PageParameters 的继承方法。我已经尝试寻找解决方案几个小时了,但尚未到达任何地方。我是 Java 新手,而且对 Wicket 完全陌生。

注意:当我删除 containsKey()getString() 代码部分时,单击提交后它会成功将用户名和密码打印到系统控制台。

我正在使用 Apache Wicket 6.18、jdk 1.7 和 Eclipse Juno IDE。

最佳答案

由于 containsKey()getString() 不再出现在 Wicket 6.x 文档中(它们出现在 1.4x 中),因此 getNamedKeys().contains()get() 可以工作,而且我猜应该是正确的方法。

以下是错误部分的代码片段:

//previous code...

if(para.getNamedKeys().contains("username"))
{
uname = para.get("username").toString();
}

//next code....

归功于用户 JB Nizet的输入并帮助我找到答案。

关于java - 为什么在 PageParameters 类型上使用 containsKey() 和 getString() 时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com