2012-10-09 34 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中概述。

相关问题