2015-01-05 40 views
1

我正在嘗試用於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 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。

+1

http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/request/mapper/parameter/PageParameters.html:你在哪裏看到一個方法containsKey()和一個方法getString()? –

+0

@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

+1

查看URL:這是1.4版本的javadoc。你正在使用6.18。 –

回答

1

由於containsKey()getString()不再存在的檢票6.x的文檔中(他們中有1.4倍),因此getNamedKeys().contains()get()工作,應該是正確的方法,我猜。

以下是錯誤部分的代碼片段,現在:

//previous code... 

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

//next code.... 

積分用戶JB Nizet輸入和幫助我找到答案。

0

改爲使用新的API:PageParameters#get(String)。

相關問題