我有一个a4j:outputPanel
,它是rich:dragSource
的父级。在这个面板下面,我有一个看不见的rich:panel
,这是我的dropzone。当我开始拖动面板上方的dropzone时,可见。这是这样做的:
<h:panelGroup id="panelWrapper">
<a4j:outputPanel onmousedown="beginDragDrop();" >
<rich:dragSource type="type" />
<h:outputText value="content" />
</a4j:outputPanel>
</h:panelGroup>
<rich:panel id="dropTargetPanelWrapper" >
<rich:panel id="dropTargetPanel" rendered="#{bean.showDropTarget}" >
<rich:dropTarget immediate="true" acceptedTypes="type" dropListener="#{bean.processDrop}" oncomplete="stopDragDrop();" render="panelWrapper" />
</rich:panel>
<rich:panel id="dropTargetPanelWrapper" styleClass="dropTargetPanelWrapper" >
<a4j:jsFunction name="beginDragDrop" action="#{bean.beginDragDrop}" render="dropTargetPanelWrapper" />
<a4j:jsFunction name="stopDragDrop" action="#{bean.stopDragDrop}" render="dropTargetPanelWrapper" />
可以通过onmousedown="beginDragDrop();"
上的a4j:outputPanel
完成dropzone的显示。这到目前为止工作正常。当用户将面板拖动到dropzone时,将调用适当的bean方法,并且dropzone的oncomplete="stopDragDrop();"
会使dropzone再次不可见。但是当用户刚刚取消拖动时(他没有在掉落区域上释放面板),掉落区仍然可见。
为此,我在面板上尝试了onmouseup="stopDragDrop();"
,但这会导致bean无法被调用,因为之前调用了javascript函数。这使得dropzone不可见,因此不再有任何动作事件。
如何让我的dropzone隐身?