所以问题是我遇到了一个运行时错误,该错误涉及文件树内部生成的复选框需要位于表单元素内。问题是,它在form元素内部,但是form元素像这样包裹在树上:
<t:Form t:id="form>
<t:Tree t:id="tree" model="model" node="node">
<p:label>
${node.label}
<t:Checkbox value="checkboxNode.selected" />
</p:label>
</t:Tree>
</t:Form>
节点的根级别会生成没有问题的复选框。但是,当我选择加号来展开树枝时,它将引发分支复选框的错误。如果刷新页面,它记住哪些分支已展开,则消失了。如果我要扩展更多,那么它将再次引发错误。如果我最小化分支然后再次扩展它,也会发生同样的事情。
我怀疑这与扩展树如何使用AJAX调用生成其字段有关,并且无法检测包裹在外部的表单。我想到的两个可能的解决方法是:
这里的任何人都对解决此问题有更好的解决方法,或者有一种方法可以告诉生成的复选框无需重新加载页面即可识别外部格式?
答案 0 :(得分:1)
最终使用了不同的路线。我遇到的复选框破坏了交易,这是我想不出一种方法来告诉服务器端的布尔值根据客户端的复选框进行更新。
其原因是布尔值是根据需要生成的,而不是页面Java侧的固定集。通过将唯一的ID链接到服务器端的布尔值进行了尝试,但是即使如此,我仍然无法确定将这些ID与客户端的复选框相关联的方法。
因此,我改用了可以使用上下文的事件链接。我只是传入了生成的树节点ID作为上下文,可以在事件链接中搜索该节点并将其添加到服务器上的“选定”列表中。
答案 1 :(得分:0)
如JavaDoc for the Tree
component所述:
树不是表单控制组件...
看看AjaxFormLoop
的源代码及其处理AJAX表单更新的方式,我相信您需要根据需要构建自定义组件。