我有两个面板,一个是源,另一个是接收器。
现在我想将对象从源移动到 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。
谢谢