我在 JSF 中完成一项极其简单的任务时遇到了很大的问题。问题:我有对象,它们具有聚合属性,这些属性的类型可能因对象而异。根据属性的类型,我想使用一组不同的输入字段。
子类型组件驻留在框架中并按需加载。为此,我使用以下代码:
<h:panelGroup id="zusatzdaten">
<fieldset class="clear">
<legend>#{tickerUI.ticker.tickerDescription.label}
(#{tickerUI.ticker.tickerDescId})
</legend>
<h:panelGroup rendered="#{tickerUI.editComponentName != null}">
<ui:include src="#{tickerUI.editComponentName}"/>
</h:panelGroup>
</fieldset>
</h:panelGroup>
组件的名称来自于 @SessionScope 的 TickerUI。现在令人眼花缭乱的一点:当它第一次加载时,会显示正确的子组件。但是,当在导航中使用链接时,会导致包含不同的组件,内容不会更新!这会导致错误,因为数据现在是不同的子类型,但表单组件仍然来自前一个。
从错误返回并再次单击链接时,将显示正确的组件。我记录了 editComponentName 的值并返回了正确的值。这非常令人困惑。为什么当 getter 将正确的组件名称返回到 src 属性时包含错误的内容?
非常感谢帮助。