我有一个面板弹出窗口。它应该在页面加载和点击链接时隐藏,它应该显示。我写了下面的代码。
<h:panelGroup rendered="#{showTerritoryDropdown}">
<div class="form-row float">
<label for="territory">Territory:</label>
<h:selectOneMenu style="width: 200px" id="territoryDropdownId" styleClass="searchCategory" >
<f:selectItem itemLabel="ALL" itemValue="0" />
<f:selectItem itemLabel="Worldwide" itemValue="1" />
<f:selectItems value="#{reasearchSPTDetailsService.getTerritoryList()}" />
</h:selectOneMenu>
</div>
</h:panelGroup>
我已将 showTerritoryDropdown 声明为
@Out(required = false)
boolean showTerritoryDropdown = false;
单击链接时,我正在设置 showTerritoryDropdown = true;
即使这样面板弹出窗口也不会显示。我认为这是一个小错误,但我不了解,因为我是编码新手。请帮助我。
最佳答案
大多数症状表明您尝试使用 ajax 渲染组件在 View 中实际不存在。因此您会得到错误,因为 JSF 不知道要更新什么:当 ajax 调用完成时,具有指定 ID 的组件将被替换为从服务器派生的新组件。
所以,这行不通:
<h:panelGroup id="id" rendered="#{bean.rendered}" />
<h:commandButton>
<f:ajax render="id" />
</h:commandButton>
虽然这会按预期工作:
<h:panelGroup id="id">
<h:panelGroup rendered="#{bean.rendered}" />
</h:panelGroup>
<h:commandButton>
<f:ajax render="id" />
</h:commandButton>
因此,解决方案是将要更新的组件放置在始终出现在 View 中的组件中。
关于jsf - h :panel group not rendering properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027830/