我处于这种情况,我需要将变量传递给某个对话框(在自定义标记组件中),具有该值的字段应该是可编辑的,但该对话框不应该能够修改原始值托管bean。
这就是我调用组件的方式:
<my:aerodromeSelection value="#{fpl.adepIcaoId}" id2="adep"/>
这是复合组件的片段(仅包括相关部分):
<composite:interface>
<composite:attribute name="id2" required="true"/>
<composite:attribute name="value" required="true"/>
</composite:interface>
<composite:implementation>
<p:panelGrid>
<p:commandButton icon="ui-icon-search" update="#{cc.attrs.id2}_dialog" oncomplete="#{cc.attrs.id2}_dialogAerodrome.show()"/>
</p:panelGrid>
<p:dialog widgetVar="#{cc.attrs.id2}_dialogAerodrome" dynamic="true">
<p:panelGrid>
<p:inputText value="#{cc.attrs.value.icaoCode}"/>
</p:panelGrid>
</p:dialog>
</composite:implementation>
单击按钮后,将显示对话框,我可以编辑该值。问题是,我不希望将值设置为原始变量。 我尝试将值设置为自定义组件的托管bean并使用这些值,但如果我这样做,那么在一个页面中有多个对话框,我总是得到最后一个的值:
<c:set value="#{cc.attrs.value.icaoCode}" target="#{adSearchBB}" property="icaoCode"/>
所以我需要解决两个问题之一:
此外,托管bean的范围应该是什么?理想情况下,每个组件需要一个bean。
我正在使用