2011-10-21 77 views
0

我在使用带有Ajax行为的“渲染”属性时遇到了一些问题。我将粘贴代码,所以我认为这将是一个很多更清晰:JSF 2.0 - 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”只是查看作用域JSF托管Bean与appropiate制定者/吸气。

这样它的作品,我的意思是,当用户选择选项“侮辱和不尊重”,panelGroup中“panelMonto”将得到更新,我们将看到第一个inputText的,反之,当用户选择选项“检查 “用户将看到第二个inputText。

对于这种方法,我用“F:AJAX”组件,我更新了整个@form获得这种行为的工作,我只是想更新panelGroup中“panelMonto”(使用render =“panelMonto”它不会在所有的工作(:表格名称:我甚至全范围解析尝试panelMonto没有结果)。

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

最好的问候!

注(一个解决方案)

我得到了一个解决方案(以作为输入 JSF rendered is not working 和一点我自己的)。我刚搬到一个新表格中,我对 感兴趣,根据用户选择的内容进行过滤。这样我仍然 使用@form阿贾克斯的渲染,它只会呈现这个新的形式(不是我使用的整体形式 !)Neverthless我仍然想知道 是不是使用@form的解决方案,只是组件ID。

+1

简而言之,'render =“@ form”'工作,但'render =“panelMonto”'不?好的,有更多的观点吗?是不是'panelMonto'组件实际上在另一个'UINamingContainer'组件中,比如'','','',一个复合组件或其他东西?生成的HTML输出中的客户端ID是什么(浏览器中的打开页面,右键单击并查看源代码*以查找它)? – BalusC

+0

感谢您对这方面的评论。问题是围绕着这些东西,我设法解决它与 ...(我所做的更改是放置呈现为panelGroup组件的属性) –

回答

0

,如果你有

render=":panelMonto" 

render=":formName:panelMonto" 

仍然没有工作检查什么?

这应该只

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

工作,你可以添加更多的代码? 你也可以检查你的浏览器(在铬:右键单击,检查元素,网络),看看是否有任何活动?也许是因为你呈现相同的东西...