Jsf 2 Primefaces将文档拖动到文件夹结构中
我试图在Primefaces应用程序中实现一些拖放行为,例如,您有一个记录的p:datatable和一个表示文件夹结构的p:tree。理想情况下,我希望能够将文档从表中拖到树中的各个文件夹中,但我很难弄清楚您是如何做到这一点的 从我所看到的,树不支持其他非树组件将自己放入树节点,或者至少我看不到任何指示您可以这样做的内容Jsf 2 Primefaces将文档拖动到文件夹结构中,jsf-2,primefaces,Jsf 2,Primefaces,我试图在Primefaces应用程序中实现一些拖放行为,例如,您有一个记录的p:datatable和一个表示文件夹结构的p:tree。理想情况下,我希望能够将文档从表中拖到树中的各个文件夹中,但我很难弄清楚您是如何做到这一点的 从我所看到的,树不支持其他非树组件将自己放入树节点,或者至少我看不到任何指示您可以这样做的内容 Primefaces无法实现此功能,或者有人能告诉我从哪里开始的正确方向吗?好的,我设法修改了Primefaces showcase中的一个自定义示例,以获得我想要的功能,关键
Primefaces无法实现此功能,或者有人能告诉我从哪里开始的正确方向吗?好的,我设法修改了Primefaces showcase中的一个自定义示例,以获得我想要的功能,关键元素如下所示: XHTML列定义(列中的图像被拖动到文件夹): 上述javascript中引用的远程“tableToTree”命令:
<pf:remoteCommand name="tableToTree" actionListener="#{backingBean.tableToTree}"
update="documentTable"/>
最后,backingbean中的方法读取文件夹名和文档id,从中可以相应地更新模型:
public void tableToTree() {
Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
System.out.println("folderName=" + params.get("folderName"));
System.out.println("messageId=" + params.get("messageId"));
}
public void tabletore(){
Map params=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
System.out.println(“folderName=“+params.get”(“folderName”);
System.out.println(“messageId=“+params.get”(“messageId”);
}
谢谢。这个解决方案在某种程度上很有效。除非我关闭对话框并重新打开它,否则它只能在我的对话框中工作一次。为什么呢?另外,如果我想获取树节点的id而不是文本,我应该怎么做?
$('.ui-treenode-label').droppable({
activeClass: 'ui-state-active',
hoverClass: 'ui-state-highlight',
tolerance: 'pointer',
drop: function(event, ui) {
var folderName = $(this).text();
var spanId = document.getElementById(ui.draggable[0].id).parentNode.id;
//span Id is of format document_{documentId}, so we need to discard the characters before the id
var documentId = spanId.substring(spanId.indexOf("_")+1, spanId.length);
tableToTree([
{name: 'folderName', value: folderName}
,{name: 'documentId', value: documentId}
]);
}
});
<pf:remoteCommand name="tableToTree" actionListener="#{backingBean.tableToTree}"
update="documentTable"/>
public void tableToTree() {
Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
System.out.println("folderName=" + params.get("folderName"));
System.out.println("messageId=" + params.get("messageId"));
}