Есть ли способ вызвать метод ajax бэк-бэка в JSF2/Primefaces 5.x, щелкнув правой кнопкой мыши по изображению? В Primefaces есть компонент contextMenu, но он вызывает меню, которое я не хочу.Прямоугольник правой кнопкой мыши - вызов метода бэк-компонента
0
A
ответ
4
Использование this JQuery кода и PrimeFaces <p:remoteCommand>
вы можете добиться этого, здесь просто код:
<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>
Это отключит меню правой мыши на изображениях с классом RMC
и вызвать метод из резервного боб. Если вы не хотите отключать меню, просто удалите .each()
.
EDIT: После обновления элемента DOM он теряет события, указанные во время $(document).ready()
, поэтому вам нужно добавить событие onmousedown
непосредственно в компонент.
EDIT2: Изменено $(document).ready()
, теперь работает для элементов с классом RMC даже после обновления.
0
Очень просто ... Сломайте свою проблему. Сначала подумайте о html. Вы должны просто добавить правый клик через jquery и использовать p:remoteCommand
, чтобы позвонить backingbean
Спасибо. Я просто не могу найти мотивацию, чтобы на самом деле создавать такие ответы. Всегда удивляйтесь, почему люди не могут так думать о таких вещах. – Kukeltje
спасибо @Geinmachi. Будет ли это работать только для методов действий (по сравнению с actionListener)? Я попробовал метод actionListener (который возвращает void). Тем не менее, он работает только в первый раз, после того, как метод возвращается, функция/метод правого щелчка не запускается в javascript или в бэк-компоненте (я помещаю инструкции console.log в код javascript) – user972391
Почему вы хотите, чтобы actionListener? – Geinmachi