Честно говоря, я думаю, что связывание, вероятно, самый простой путь, однако, когда я был в такой ситуации, я обнаружил, что составные компоненты часто предлагают лучшее решение, чем связывания. В зависимости от ситуации (и, опять же, от случая к случаю) вы можете использовать составной компонент, чтобы обойти эту проблему. Это позволяет вам творчески повторно использовать части страницы, чтобы ваши конкретные обновления не занимали много времени и вы могли повторно использовать код.
Примером этого может быть:
//comp:myDialog
...
<composite:interface>
<composite:attribute name="update" />
<!-- Other attributes -->
</composite:interface>
<composite:implementation>
...
<!-- Implementation -->
<p:commandButton update="#{cc.attrs.update}"/>
...
</composite:implementation>
И здесь может быть используемый компонент:
//for the sake of argument 'comp' as your library
<h:form id="someForm">
<p:inputText value="#{bean.changeMe}" id="changeMe"/>
</h:form>
<h:form id="dialog">
<!-- dialog here -->
<comp:myDialog update="someForm:changeMe" />
</h:form>
Разделив это представление на фрагмент кода, который можно многократно использовать, вы сможете обойти бремя указания полного пути, поскольку теперь его намного проще использовать повторно. Тем не менее, я думаю, что это зависит от конкретного случая. Для повторного использования создайте новый объект (компонент) и используйте его повторно. Если вы имеете дело с высокодинамичной средой: связывайте ее.
Я ни в коем случае не эксперт, но в целом вышесказанное вывело меня из множества сложных ситуаций.
РЕДАКТИРОВАТЬ: при повторном чтении вы должны также убедиться, что представление вкладок не загружается лениво, и взглянуть на рендеринг, чтобы убедиться в правильности пути (проверьте идентификатор). У меня были проблемы (в более старых версиях Primefaces), когда иногда идентификатор был вложен в p: outputPanel или в редких случаях идентификатор subview. Это может быть очень просто исправить, указав полный путь ': subview: form: component', хотя это не должно иметь место.