当使用带有ajax行为的“rendered”属性时,我遇到了一些问题。我会粘贴代码,所以我认为它会更清晰:
<h:selectOneMenu value="#{registrarVentaController.esCobroChequeString}">
<f:selectItem itemLabel="Efectivo" itemValue="false"/>
<f:selectItem itemLabel="Cheque" itemValue="true"/>
<f:ajax execute="@this" render="@form"/>
</h:selectOneMenu>
<h:panelGroup id="panelMonto">
<span>Monto:</span>
<h:inputText value="#{registrarVentaController.monto}" rendered="#{registrarVentaController.banCobroCheque}"/>
<h:inputText value="#{registrarVentaController.monto}" rendered="#{not registrarVentaController.banCobroCheque}"/>
</h:panelGroup>
我的“#{registrarVentaController}”只是一个View Scoped JSF Managed Bean,有适当的setter / getters。
这种方式可行,我的意思是,当用户选择选项“ Efectivo ”时,panelGroup“ panelMonto ”会更新,我们会看到第一个inputText,相反,当用户选择选项“检查”时,用户将看到第二个inputText。
对于这种方法,我使用了“ f:ajax ”组件,我更新了整个 @form 以使此行为正常工作,我只想更新panelGroup“ panelMonto “(使用render =”panelMonto“它根本不起作用(我甚至尝试使用全范围分辨率:formName:panelMonto 而没有结果)。
我只是希望使用ajax =“idComponent”或类似行为进行渲染,以根据用户选择的内容显示某些部分。
最诚挚的问候!
注意(一个解决方案)
我设法得到了一个解决方案(作为输入 JSF rendered is not working 还有一点我自己)。我刚刚搬到一个新形式的部分,我 有兴趣根据用户选择过滤。这样我还是 使用@form ajax的渲染,它只会呈现这个新形式(而不是 我正在使用整个表格!)我还在想,是否还有 是一个不使用@form和组件/ ID的解决方案。
答案 0 :(得分:0)
如果您使用
查看该怎么办?render=":panelMonto"
不是
render=":formName:panelMonto"
还没有用?
这应该仅适用于
render="panelMonto" //because is in the same form
您可以添加更多代码吗? 你也可以检查你的浏览器(在chrome:右键单击,检查元素,网络),看看是否有任何活动?也许因为你而呈现同样的事情......