调用 js 函数,该函数将在新项目丢弃时应用效果:
<p:ajax listener="#{bean.onDrop}" onstart="applyEffects();" update="newPanel" />
功能是:
function applyEffects() {
var oldPanel = $(document.getElementById('oldPanel'));
var newPanel = $(document.getElementById('newPanel'));
oldPanel.css({"display":"none"});//or oldPanel.fadeOut(500) which looks fancy
newPanel.css({"display":"inline"});
newPanel.effect("highlight",
{color:"#87FF7A"}, 1500);
}
- 调用时不要忘记提供组件的确切客户端 ID
document.getElementById
。您可以通过浏览器的开发人员设置来检测它。如果有问题,你可以放弃update="newPanel"
,或者你可以试试update="oldpanel newpanel"
。
为了能够将其应用于特定面板:
public void onComponentDrop(DragDropEvent ddEvent) {
int id = event.getData();//or sth.similar to getId
RequestContext.getCurrentInstance().addCallbackParam("index", id);
}
上面的代码向 ajax 响应添加了一个参数,它可以通过以下方式检索:
function applyEffects(xhr,status,args) {
var oldPanel = $(document.getElementById('oldPanel'));
var newPanel = $(document.getElementById('newPanel'));
if(args.id=='oldPanel') {//oldPanel or whatever which equals to eventID
oldPanel.css({"display":"none"});//or oldPanel.fadeOut(500) which looks fancy
}
newPanel.css({"display":"inline"});
newPanel.effect("highlight",
{color:"#87FF7A"}, 1500);
}
你应该从p:ajax oncomplete="applyEffects(xhr,status,args);"
. 我在这里直接编码,因此可以在 IDE 上轻松看到一些错误。