jsf - h :panel group not rendering properly

标签 jsf seam

我有一个面板弹出窗口。它应该在页面加载和点击链接时隐藏,它应该显示。我写了下面的代码。

<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/

相关文章:

database-design - 如何不在休眠中创建列包括实体类中的一些属性

java - Seam:相当于 components.xml 中的@Startup?

seam - 从 Pages.xml 注入(inject)(Seam)

java - 应用程序服务器过度使用 CPU 的原因

javascript - 当 JSF 组件重新渲染时,如何重新应用 JS/jQuery document.ready?

jsf - 是 PrimeFaces Javascript 库的 API(即 : widgetVars) available and documented?

jsp - JSF、RichFaces、PrimeFaces 和 IceFaces 之间的区别

ajax - 重定向到 JSF ajax 错误页面的模式

java - RichFaces 文件上传抛出 NullPointerException

java - 从 Seam 3 到 Apache DeltaSpike (seam-beans.xml)