Jsf 2 Primefaces右键单击-支持bean方法调用
在JSF2/Primefaces 5.x中,有没有一种方法可以通过右键单击图像来调用backingbean ajax方法?Primefaces中有一个contextMenu组件,但它会显示一个我不想要的菜单。使用jQuery代码和PrimefacesJsf 2 Primefaces右键单击-支持bean方法调用,jsf-2,primefaces,contextmenu,right-click,backing-beans,Jsf 2,Primefaces,Contextmenu,Right Click,Backing Beans,在JSF2/Primefaces 5.x中,有没有一种方法可以通过右键单击图像来调用backingbean ajax方法?Primefaces中有一个contextMenu组件,但它会显示一个我不想要的菜单。使用jQuery代码和Primefaces可以实现这一点,下面是简单的代码: $(document).on(“mousedown”,“.RMC”,函数(){ $(“.RMC”)。每个(函数){ this.oncontextmenu=函数(){ 返回false; }; }) $(“.RMC
可以实现这一点,下面是简单的代码:
$(document).on(“mousedown”,“.RMC”,函数(){
$(“.RMC”)。每个(函数){
this.oncontextmenu=函数(){
返回false;
};
})
$(“.RMC”).mousedown(函数(e){
如果(e.按钮==2){
右鼠标单击();
返回false;
}
返回true;
});
});
功能rmc(e){
this.oncontextmenu=函数(){
返回false;
};
如果(e.按钮==2){
右鼠标单击();
返回false;
}
返回true;
}
它将在带有类RMC
的图像上禁用鼠标右键菜单,并从备份bean调用方法。如果不想禁用菜单,只需删除.each()
部分即可
编辑:
更新DOM元素后,它会丢失在$(document).ready()期间给定的事件,因此您必须直接在组件中添加onmousedown
事件
编辑2:
已更改的$(document).ready()
,现在即使在更新之后也适用于使用RMC类的元素。使用jQuery代码和PrimeFaces
您可以实现这一点,下面是简单的代码:
$(document).on(“mousedown”,“.RMC”,函数(){
$(“.RMC”)。每个(函数){
this.oncontextmenu=函数(){
返回false;
};
})
$(“.RMC”).mousedown(函数(e){
如果(e.按钮==2){
右鼠标单击();
返回false;
}
返回true;
});
});
功能rmc(e){
this.oncontextmenu=函数(){
返回false;
};
如果(e.按钮==2){
右鼠标单击();
返回false;
}
返回true;
}
它将在带有类RMC
的图像上禁用鼠标右键菜单,并从备份bean调用方法。如果不想禁用菜单,只需删除.each()
部分即可
编辑:
更新DOM元素后,它会丢失在$(document).ready()期间给定的事件,因此您必须直接在组件中添加onmousedown
事件
编辑2:
已更改的$(document).ready()
,现在即使在更新之后也适用于使用RMC类的元素。非常简单…请解决您的问题。首先考虑html。您只需通过jquery添加一个右键单击,并使用p:remoteCommand
调用backingbean非常简单…解决您的问题。首先考虑html。您只需通过jquery添加一个右键单击,然后使用p:remoteCommand
调用backingbean谢谢。我似乎找不到真正创造这样答案的动机。总是想知道为什么人们自己不能想到这样的事情。谢谢@Geinmachi。这是否只适用于操作方法(与actionListener相比)?我尝试了actionListener方法(返回void)。但是,它只在方法返回后第一次起作用,在javascript或支持bean中没有调用右键单击函数/方法(我将console.log语句放在javascript代码中)为什么需要actionListener?支持bean方法没有被多次调用。所以我尝试了action和actionListener,但都没有被调用。我甚至在remoteCommand上添加了process=@this,但是JS函数和backingbean方法只被调用一次。此外,即使该方法第一次被调用,我仍然看到上下文菜单。它每次都为我调用,可能会发布整个
谢谢。我似乎找不到真正创造这样答案的动机。总是想知道为什么人们自己不能想到这样的事情。谢谢@Geinmachi。这是否只适用于操作方法(与actionListener相比)?我尝试了actionListener方法(返回void)。但是,它只在方法返回后第一次起作用,在javascript或支持bean中没有调用右键单击函数/方法(我将console.log语句放在javascript代码中)为什么需要actionListener?支持bean方法没有被多次调用。所以我尝试了action和actionListener,但都没有被调用。我甚至在remoteCommand上添加了process=@this,但是JS函数和backingbean方法只被调用一次。此外,即使该方法是第一次被调用,我仍然看到上下文菜单。它每次都为我调用,可能是发布整个
<h:form>
<p:graphicImage id="myImage" onmousedown="rmc(event)" library="img" name="myImage.png" class="RMC"/>
<p:remoteCommand name="rightMouseClick" action="#{backingBean.method}" update="myImage"/>
</h:form>
<script>
$(document).on("mousedown", ".RMC", function () {
$(".RMC").each(function () {
this.oncontextmenu = function () {
return false;
};
})
$(".RMC").mousedown(function (e) {
if (e.button == 2) {
rightMouseClick();
return false;
}
return true;
});
});
function rmc(e) {
this.oncontextmenu = function () {
return false;
};
if (e.button == 2) {
rightMouseClick();
return false;
}
return true;
}
</script>