从Java中的另一个类获取参数

从Java中的另一个类获取参数,java,wicket,Java,Wicket,我有一个简单的问题,但我解决不了。。 我在用wicket。 在web应用程序上,我有一个按钮(加载)。当我单击该按钮时,一些数据从web加载,保存在数据库中,然后加载到web应用程序(StartPage.html)上。我有另一个按钮用于更正数据(编辑),当我单击它时,EditPage.html将加载。所以我只有两页。在EditPage.html上进行一些更正后,我单击save按钮,并在数据库中更新新数据,然后应将其加载到web应用程序(StartPage.html)中 这很简单,但在我点击“加载

我有一个简单的问题,但我解决不了。。 我在用wicket。 在web应用程序上,我有一个按钮(加载)。当我单击该按钮时,一些数据从web加载,保存在数据库中,然后加载到web应用程序(StartPage.html)上。我有另一个按钮用于更正数据(编辑),当我单击它时,EditPage.html将加载。所以我只有两页。在EditPage.html上进行一些更正后,我单击save按钮,并在数据库中更新新数据,然后应将其加载到web应用程序(StartPage.html)中

这很简单,但在我点击“加载”按钮之前,应该是干净的。因此,如果我要在“加载”之前清理表,那么每次单击“编辑”按钮时都会清理表。我试着制作一些标志,或者向StartPage发送参数,但它看起来像一个圆圈

StartPage应该每次加载数据,但第一次清理表,然后不清理。问题是以某种方式发送参数

我希望这很清楚,有什么建议吗

更新:

编辑页

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 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类EditPage扩展网页{
公共编辑页(最终页参数){
表格=新表格(“表格”){
@凌驾
受保护的void onSubmit(){
//如果单击“保存”按钮
PageParameters params=新的PageParameters();
参数添加(“标志”、“真实”);
setResponsePage(起始页.class,参数);
}
};
}
}
起始页

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
    }
}
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
    }
}
公共类起始页扩展网页{
公共起始页(最终页参数){
字符串标志=参数。getString(“标志”)
如果(标志==“假”)
//从数据库中删除
表格=新表格(“表格”){
@凌驾
受保护的void onSubmit(){
//从web加载到DB
}
};
//从数据库加载
}
}

我终于做到了这一点,但正如我所见,这是一个“糟糕”的解决方案

编辑页

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 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类EditPage扩展网页{
公共编辑页(最终页参数){
表格=新表格(“表格”){
@凌驾
受保护的void onSubmit(){
//如果单击“保存”按钮
PageParameters params=新的PageParameters();
参数添加(“标志”、“真实”);
setResponsePage(起始页.class,参数);
}
};
}
}
起始页

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
    }
}
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
    }
}
公共类起始页扩展网页{
公共起始页(最终页参数){
表格=新表格(“表格”){
@凌驾
受保护的void onSubmit(){
//从数据库中删除
//从web加载到DB
//从数据库加载
}
};
if(parameters.getString(“flag”)!=null)
//从数据库加载
}
}

您还可以执行以下操作:

class StartPage {
    boolean flag;

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

// in EditPage
void onSubmit() {
    setResponsePage(new StartPage(true));
}
(省略您已有的代码。)


这将重定向到可设置书签的URL。(这可能是您想要的。)中概述了它的具体功能。

您需要使用[
RequestCycle.setResponsePage()
](,org.apache.wicket.request.mapper.parameter.PageParameters))的重载。分别传递
StartPage.class
EditPage.class
,以及您实例化的
PageParameters
实例。(我已经有一段时间没有完成Wicket了,手头没有scratchpad项目,所以我无法提供完整的答案。)是的,但我可以将哪个参数从EditPage发送到StartPage?我尝试过布尔标志,但这并不能让它变得更容易。。比如,如果我设置公共布尔标志,然后对其进行初始化,那么下次如果我发送参数,它将以相同的方式初始化,并且参数不会有帮助。根据您的描述,还不清楚您到底尝试了什么。制作一个代码示例,其中包括如何在
EditPage
中“发送”参数,以及如何在
StartPage
中检索参数,而不是发布没有代码的类。此外,如果您在代码中实际使用的构造函数和
setResponsePage()的签名不清楚
:一旦加载了
StartPage
,就无法读取
EditPage
的字段。(从技术上讲,Wicket中有一种方法可以实现这一点,但这不是一个好主意。)您需要使用
PageParameters
对象发送参数,这有点像
HashMap
。如果您想通过重定向来实现这一点,这正是您应该做的
PageParameters
表示URL中的查询参数,因此它们必须是字符串。对于类型转换,可以使用