2012-10-09 35 views
1

我有一個簡單的問題,但我無法解決它.. 我正在使用wicket。 在Web應用程序上,我有一個按鈕(加載)。當我點擊該按鈕時,一些數據從網上加載,保存在DataBase中,然後加載到Web應用程序(StartPage.html)上。我有另一個按鈕來修正數據(編輯),當我點擊它時,EditPage.html加載。所以我只有2頁。在對EditPage.html進行一些更正之後,我單擊DataBase中的保存按鈕和新的數據更新,然後應該加載到Web應用程序(StartPage.html)上。從Java中的另一個類獲取參數

這很簡單,但在點擊「加載」按鈕之前,應該是乾淨的。因此,如果我在「加載」之前清理表格,點擊「每次點擊」編輯「按鈕時將清除它。我試圖製作一些標誌,或者將參數發送到StartPage,但它看起來像一個圓圈。

StartPage應該每次加載數據,但第一次清理表,但不是。問題是以某種方式發送參數..

我希望它很清楚,有什麼建議嗎?

更新時間:

EditPage

public class EditPage extends WebPage { 
    public EditPage(final PageParameters parameters) { 
     Form<?> form = new Form<Void>("form") { 
        @Override 
        protected void onSubmit() { 
         // if button "save" clicked 
         PageParameters params = new PageParameters(); 
         params.add("flag", "true"); 
         setResponsePage(StartPage.class, params); 
        } 
     }; 
    } 
} 

起始頁

public class StartPage extends WebPage { 
    public StartPage(final PageParameters parameters) {  
      String flag = parameters.getString("flag") 
      if (flag=="false") 
       // Delete from DB 

      Form<?> form = new Form<Void>("form") { 
       @Override 
       protected void onSubmit() { 
        // Load from web to DB  
       } 
      }; 

      // Load from DB 
    } 
} 
+0

您需要使用['RequestCycle.setResponsePage()']的重載(http://wicket.apache.org/apidocs/1.5/org/apache/wicket/request/cycle/RequestCycle.html# setResponsePage(java.lang.Class,org.apache.wicket.request.mapper.parameter.PageParameters))。分別傳遞'StartPage.class'或'EditPage.class',並實例化一個'PageParameters'實例。 – millimoose

+0

(我已經做了Wicket已經有一段時間了,我沒有便捷的項目,所以我無法爲此提供完整的答案。) – millimoose

+0

是的,但是我可以從EditPage發送到StartPage的哪個參數?我試過布爾標誌,但它並沒有讓它更容易..就像我做**公共布爾標誌**然後初始化它,然後下一次如果我要麼發送參數,它將被初始化相同的方式和參數將不會有幫助 – fen1ksss

回答

1

我終於做到了這樣,但我可以看到這是 「壞」 的解決方案

EditPage

public class EditPage extends WebPage { 
    public EditPage(final PageParameters parameters) { 
     Form<?> form = new Form<Void>("form") { 
        @Override 
        protected void onSubmit() { 
         // if button "save" clicked 
         PageParameters params = new PageParameters(); 
         params.add("flag", "true"); 
         setResponsePage(StartPage.class, params); 
        } 
     }; 
    } 
} 

起始頁

public class StartPage extends WebPage { 
    public StartPage(final PageParameters parameters) {  

      Form<?> form = new Form<Void>("form") { 
       @Override 
       protected void onSubmit() { 
        // Delete from DB 
        // Load from web to DB 
        // Load from DB  
       } 
      }; 

      if (parameters.getString("flag")!=null) 
       // Load from DB 
    } 
} 
+0

這正是你應該這樣做,如果你想用重定向做到這一點。 'PageParameters'代表進入URL的查詢參數,所以它們必須是字符串。對於類型轉換,您可以使用['getAsBoolean()'](http://wicket.apache.org/apidocs/1.4/org/apache/wicket/util/value/ValueMap.html#getAsBoolean(java.lang.String )) – millimoose

1

你也可以做類似如下:

class StartPage { 
    boolean flag; 

    StartPage(boolean flag) { 
     this.flag = flag; 
    } 
} 

// in EditPage 
void onSubmit() { 
    setResponsePage(new StartPage(true)); 
} 

(你已經被省略的代碼)

這將做重定向到可收藏的網址。 (這可能是你想要的。)它將完成的事情在this SO answer中概述。

相關問題