Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wicket:在另一个面板的面板中提交表单_Java_Ajax_Wicket - Fatal编程技术网

Java Wicket:在另一个面板的面板中提交表单

Java Wicket:在另一个面板的面板中提交表单,java,ajax,wicket,Java,Ajax,Wicket,我得到了一个有两个面板(面板a和面板b)的页面。我使用其中一个面板(面板b)在表中显示一些数据。我在这个表中添加了一个表单和一些复选框。我的第二个面板(panal a)用于显示按钮。 我想通过按下面板a的按钮来提交面板b的表单,这样我就可以对选中的面板做一些事情 我搜索了一下,我想我必须使用ajax提交链接。但我不明白我是如何得到我的检查行 页面标记: <wicket:extend xmlns:wicket="http://wicket.apache.org"> <div

我得到了一个有两个面板(面板a和面板b)的页面。我使用其中一个面板(面板b)在表中显示一些数据。我在这个表中添加了一个表单和一些复选框。我的第二个面板(panal a)用于显示按钮。 我想通过按下面板a的按钮来提交面板b的表单,这样我就可以对选中的面板做一些事情

我搜索了一下,我想我必须使用ajax提交链接。但我不明白我是如何得到我的检查行

页面标记:

<wicket:extend xmlns:wicket="http://wicket.apache.org">
   <div style="margin-top: 60px">
       <h2><span wicket:id="header"></span></h2>
       <div wicket:id="categoryButtonPanel"></div>
       <div wicket:id="categoryTablePanel"></div>
   </div>
</wicket:extend>
标记:

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<form wicket:id="form">
<span wicket:id="group">
<div class="table table-striped table-hover table-condensed" style="overflow: auto !important;" wicket:id="categoryTable">
        <table class="table table-striped">
            <thead>
                <th><input type="checkbox" wicket:id="selector">check/uncheck all</input></th>
            </thead>
            <tbody>
                <tr wicket:id="categoryList">
                    <td>
                        <input type="checkbox" wicket:id="checkBox" />
                    </td>
                </tr>
            </tbody>
        </table>
        <div wicket:id="paginator"></div>
    </div>
    </span>
</form>
</wicket:panel>

选中/取消选中全部
实际上,我可以检查每一行,如果我在表单中创建一个普通按钮,我可以使用list
selectedcategoris
来处理数据


现在我想在我的第二个面板(
categoryButtonPanel
)中添加一个或两个按钮来处理我的数据。但是怎么做呢?

仅使用此构造函数创建
AjaxSubmitLink
就可以了:

AjaxSubmitLink(字符串id、表单)


因此,您需要以某种方式将表单传递到另一个面板,以将其添加到submitlink。就个人而言,我会将这两个面板添加到一个大表单中

对于通信,您可以查看wicket事件、
IEventSink
IEvent
。您可以执行类似于面板1的操作:

public void panel1methodCalledOnSubmit(Category payload) {
     send(getPage(), Broadcast.BREADTH, payload);
}
您可以在面板2上对此做出如下响应:

@Override
public void onEvent(IEvent<?> event) {
    if (event.getPayload() instanceof Category) {
        // Do something
    }
}
@覆盖
公共无效OneEvent(IEEvent事件){
if(event.getPayload()instanceof Category){
//做点什么
}
}
如果您还不知道ajax是如何工作的,那么在进行ajax操作时,这可能有点棘手。有关活动的更多信息,请查看


建议采用更简单的设置。您可以使用
FormComponent
对象替换面板,以提高表单的通用性。

但是如果我将面板放入页面,我也需要将
CheckGroup
放入页面。因为我必须将检查组添加到表单中。这意味着我也需要把我的清单放在那里。因此,我需要将我的表单、组和所选列表传递给我的面板。我觉得不对。我无法在我的
AjaxSubmitLink
中获得所选列表吗?为什么?所选内容将与表单一起显示在面板中。您唯一需要的是对表单的引用。你甚至可以在带有表单的面板上创建一个
getForm
方法,并将结果传递给另一个面板。我确实用表单包装了我的两个面板,并在我的页面中创建了表单、selectedList和我的checkgroup。我只把我的选择列表传递给我的按钮面板,在那里我可以使用它。谢谢!这听起来很有趣,我想我会读更多关于这方面的文章。
@Override
public void onEvent(IEvent<?> event) {
    if (event.getPayload() instanceof Category) {
        // Do something
    }
}