1

我有两个面板,一个是源,另一个是接收器。

在此处输入图像描述

现在我想将对象从源移动到 PHP 面板

代码 :

public class DragDropBean{
    private List<String> source;
    private List<String> target;
// ----------> NOW getter and setter of all three element
    public DragDropBean() {
        initList();
    }

    private void initList() {
        source = Lists.newArrayList();
        target = Lists.newArrayList();
        source.add("A");
        source.add("B");
        source.add("C");
        source.add("D");
    }

    public void moveItem(String obj) {
        source.remove(obj);
        target.add(obj);
    }

事件 bean 的代码

public class DragDropEventBean implements DropListener {
    @ManagedProperty(value = "#{dragDropBean}")
    private DragDropBean dragDropBean;
// -----> NOW getter setter of  dragDropBean

    public void processDrop(DropEvent event) {
        dragDropBean.moveItem((String) event.getDragValue());
    }

xhtml 文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <f:view>
    <h:head></h:head>
    <h:outputStylesheet>
        .panelc { width:25%; }
        .valign { vertical-align:top; }
        .dropTargetPanel { width: 90%; }
        .footerClass {
            text-align: center;
            padding-top: 5px;
        }
        .rf-ind-drag{
            font-size:11px;
            cursor:pointer;
            width:100px;
            border:1px solid gray;
            padding:2px
        }
        .rf-ind-acpt{border:2px solid green}
        .rf-ind-rejt{border:2px solid red}
    </h:outputStylesheet>
    <h:form id="form">
        <h:panelGrid columnClasses="panelc valign, valign, valign, valign" columns="4" width="100%">
            <rich:panel style="width:133px">
                <f:facet name="header">
                    <h:outputText value="Source List" />
                </f:facet>
                <h:dataTable 
                    id="src" 
                    columns="1" 
                    value="#{dragDropBean.source}"
                    var="fm1" 
                    footerClass="footerClass">
                    <h:column>
                        <a4j:outputPanel layout="block" styleClass="rf-ind-drag">
                            <rich:dragSource 
                                type="PHP"
                                dragValue="#{fm1}" />
                            <h:outputText value="#{fm1}"></h:outputText>
                        </a4j:outputPanel>
                    </h:column>
                </h:dataTable>
            </rich:panel>

            <rich:panel>
                <f:facet name="header">
                    <h:outputText value="PHP Frameworks" />
                </f:facet>
                <rich:dropTarget 
                    acceptedTypes="PHP"
                    dropListener="#{dragDropEventBean.processDrop}"
                    render="phptable, src" />
                <h:dataTable 
                    id="phptable" 
                    columns="1"
                    value="#{dragDropBean.target}" 
                    var="fm2">
                    <h:column>
                        <h:outputText value="#{fm2}"></h:outputText>
                    </h:column>
                </h:dataTable>
            </rich:panel>

        </h:panelGrid>
     </h:form>
    </f:view>
</ui:composition>

dragDropEventBean 是请求范围,dragDropBean 是视图范围。

我无法将对象从面板源移动到 PHP。

谢谢

4

1 回答 1

0

尝试在此处此处获取完整的 DragAndDrop 示例。

这些链接具有您正在使用的相同代码,但它是完整的。我明白了,对我有好处。也许你删除了一些重要的代码。

除此之外,您可以<a4j:log/>在页面中插入以显示调试信息并检查是否有异常。

于 2012-10-04T19:16:48.160 回答