dragSource取消后隐藏dropzone

时间:2014-01-10 14:15:53

标签: jsf drag-and-drop richfaces invisible

我有一个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隐身?

0 个答案:

没有答案