Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Primefaces右键单击-支持bean方法调用_Jsf 2_Primefaces_Contextmenu_Right Click_Backing Beans - Fatal编程技术网

Jsf 2 Primefaces右键单击-支持bean方法调用

Jsf 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

在JSF2/Primefaces 5.x中,有没有一种方法可以通过右键单击图像来调用backingbean ajax方法?Primefaces中有一个contextMenu组件,但它会显示一个我不想要的菜单。

使用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类的元素。

使用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>