gpt4 book ai didi

jsf - 无法更新

转载 作者:行者123 更新时间:2023-12-05 04:27:17 26 4
gpt4 key购买 nike

好的,我的问题是我无法从 ajax 更新组件 (cursos),我真的不知道为什么。

这是我的代码:

罗尔
                                    <h:selectManyCheckbox value="#{usuarioSession.roles}" id="admin" disabled="#{checkView.validarAdm}">
<f:selectItem itemValue="1" itemLabel="Administrador"></f:selectItem>
<p:ajax listener="#{checkView.checkBoxAdmin()}" update="est"></p:ajax>
</h:selectManyCheckbox>

<h:selectManyCheckbox value="#{usuarioSession.roles}" id="doce" disabled="#{checkView.validarDoc}">
<f:selectItem itemValue="2" itemLabel="Docente"></f:selectItem>
<p:ajax listener="#{checkView.checkBoxDoc()}" update="est, cursos"></p:ajax>
</h:selectManyCheckbox>

<h:selectManyCheckbox value="#{usuarioSession.roles}" id="est" disabled="#{checkView.validarEst}">
<f:selectItem itemValue="3" itemLabel="Estudiante"></f:selectItem>
<p:ajax listener="#{checkView.checkBoxEst()}" update="doce, admin"></p:ajax>
</h:selectManyCheckbox>

</div>

<p:outputPanel rendered="#{checkView.check2 == true}" id="cursos" >
<div class="mb-3">
<h:outputLabel class="form-label">Curso</h:outputLabel>
<h:selectManyCheckbox value="#{usuarioSession.cursos}">
<c:forEach items="#{crearCursoView.listarCurso()}" var="lc">
<f:selectItem itemValue="#{lc}" itemLabel="#{lc.nombre}"></f:selectItem>
</c:forEach>
</h:selectManyCheckbox>
</div>
</p:outputPanel>

最佳答案

您有一个非常常见的问题 rendered="#{checkView.check2 == true}" 因为如果您的输出面板未呈现,则它不在 JSF 树中,因此您无法更新它。秘诀是始终使用没有 rendered 标志的包装器组件,这样您就可以随时更新该包装器元素,使 p:outputPanel 显示和隐藏。使用下面的示例并更新 cursosWrapper 而不是 cursos

<p:outputPanel id="cursosWrapper">
<p:outputPanel rendered="#{checkView.check2 == true}" id="cursos" >
<div class="mb-3">
<h:outputLabel class="form-label">Curso</h:outputLabel>
<h:selectManyCheckbox value="#{usuarioSession.cursos}">
<c:forEach items="#{crearCursoView.listarCurso()}" var="lc">
<f:selectItem itemValue="#{lc}" itemLabel="#{lc.nombre}"></f:selectItem>
</c:forEach>
</h:selectManyCheckbox>
</div>
</p:outputPanel>
</p:outputPanel>

...或使用 JSF 直通将 jsf:rendered 标志添加到内部 DIV。

<p:outputPanel id="cursosWrapper">
<div class="mb-3" jsf:rendered="#{checkView.check2 == true}">
<h:outputLabel class="form-label">Curso</h:outputLabel>
<h:selectManyCheckbox value="#{usuarioSession.cursos}">
<c:forEach items="#{crearCursoView.listarCurso()}" var="lc">
<f:selectItem itemValue="#{lc}" itemLabel="#{lc.nombre}"></f:selectItem>
</c:forEach>
</h:selectManyCheckbox>
</div>
</p:outputPanel>

关于jsf - 无法更新 <p :outputpanel>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72873052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com