我正在嘗試用於Java的Wicket框架,並通過構建簡單的登錄應用程序開始。 有兩個頁面,分別是包含登錄表單的login.java(和.html)以及僅顯示登錄頁面中輸入的登錄名和密碼的NextPage.java(和html)。 爲了實現頁面變量的傳遞,我使用了wicket提供的PageParameters類。爲什麼在類型PageParameters上使用containsKey()和getString()時會出現錯誤?
login.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 PageParameters
The 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。
http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/request/mapper/parameter/PageParameters.html:你在哪裏看到一個方法containsKey()和一個方法getString()? –
@JBNizet https://wicket.apache.org/apidocs/1.4/org/apache/wicket/PageParameters.html 方法摘要 - > 從類繼承的java.util.HashMap - >的containsKey 也,HTTP ://www.mkyong.com/wicket/wicket-pageparameters-example/ 我相信這個人知道他在網上發佈工作示例時他在幹什麼。 – bhatGautam
查看URL:這是1.4版本的javadoc。你正在使用6.18。 –