Решение с return false;
будет работать, только если вы не собираетесь вызывать метод или устанавливать переменную.
В этом случае просто используйте oncomplete="dialog.show();"
вместо onclick="dialog.show();"
Это пройдет через вызов метода.
Пример:
Учитывая, что следующий код находится в некоторой таблице данных, вы можете иметь
<p:commandButton value="edit" update=":dialog" oncomplete="dialog.show();">
<f:setPropertyActionListener target="#{bean.field}" value="#{_item}" />
</p:commandButton>
или позвоните установщику напрямую
<p:commandButton value="edit" update=":dialog" oncomplete="dialog.show();" action="bean.setField(_item)">
</p:commandButton>