2015-09-14 8 views

ответ

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

Спасибо. Я просто не могу найти мотивацию, чтобы на самом деле создавать такие ответы. Всегда удивляйтесь, почему люди не могут так думать о таких вещах. – Kukeltje

+0

спасибо @Geinmachi. Будет ли это работать только для методов действий (по сравнению с actionListener)? Я попробовал метод actionListener (который возвращает void). Тем не менее, он работает только в первый раз, после того, как метод возвращается, функция/метод правого щелчка не запускается в javascript или в бэк-компоненте (я помещаю инструкции console.log в код javascript) – user972391

+0

Почему вы хотите, чтобы actionListener? – Geinmachi

0

Очень просто ... Сломайте свою проблему. Сначала подумайте о html. Вы должны просто добавить правый клик через jquery и использовать p:remoteCommand, чтобы позвонить backingbean