繁体   English   中英

JSF 2.0-Ajax和渲染组件

[英]JSF 2.0 - Ajax and Rendered Components

将“ rendered”属性与ajax行为结合使用时遇到一些问题。 我将粘贴代码,因此我认为它会更加清晰:

<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范围JSF托管Bean。

以这种方式,我的意思是,当用户选择选项“ Efectivo ”时,panelGroup“ panelMonto ”将得到更新,我们将看到第一个inputText,相反,当用户选择选项“ Check ”时,用户将看到第二个inputText。

对于这种方法,我使用了“ f:ajax ”组件,在其中更新了整个@form以使此行为起作用,而我只想更新panelGroup“ panelMonto ”(使用render =“ panelMonto”,这根本不起作用(我什至尝试使用全范围分辨率:formName:panelMonto ,但没有结果)。

我只想使用ajax =“ idComponent”或类似行为渲染工作,以根据用户选择的内容显示某些部分。

最好的祝福!

注意(一种解决方案)

我设法得到了一个解决方案(作为输入, JSF呈现为行不通 ,我有点不自在)。 我刚刚将新的表单移到了新的表单中,我将根据用户选择的内容对其进行过滤。 这样,我仍然使用@form ajax的render,它将只渲染这个新表单(不是我正在使用的整个表单!)不过,我仍然想知道是否存在不使用@form以及仅使用组件的解决方案ID。

如果您与检查该怎么办

render=":panelMonto"

render=":formName:panelMonto"

还是行不通?

这应该只与

render="panelMonto" //because is in the same form

您可以添加更多代码吗? 您还可以使用浏览器(在Chrome中:右键单击,检查元素,网络)进行检查,以查看是否有任何活动吗? 也许是因为你在渲染同一件事...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM