Ajax 使h:panelGroup可点击,并发送回重复变量

Ajax 使h:panelGroup可点击,并发送回重复变量,ajax,jsf,Ajax,Jsf,我需要使一个panelGrid(一个从对象列表中填充的man)可单击,然后将与之关联的项发送到支持bean 我的HTML是为了: <ui:repeat var="searchItem" value="#{bean.filteredSearchItems}" varStatus="searchResult"> <h:panelGrid> <!-- I get some info here from the searchResult object

我需要使一个
panelGrid
(一个从对象列表中填充的man)可单击,然后将与之关联的项发送到支持bean

我的HTML是为了:

<ui:repeat var="searchItem" value="#{bean.filteredSearchItems}" varStatus="searchResult">
    <h:panelGrid>
        <!-- I get some info here from the searchResult object -->
    </h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight}" />
    <f:param name="lfi" value="#{searchResult.index}" />
</ui:repeat>
未记录任何内容-单击未注册。还有其他人有这个问题吗?有人知道如何解决吗?

需要将
嵌套到实现
ClientBehaviorHolder
的组件中。如果您打算使用
(它会生成一个HTML
),那么您应该将
嵌套在组件本身中

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

只有
的渲染器才能识别
。如果您的目标是支持EL 2.2的Servlet 3.0兼容容器(Tomcat 7、Glassfish 3、JBoss 6/7等),那么您可以将其作为方法参数传递:

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult.index)}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

如果愿意,您甚至可以传递整个对象:

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult)}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

如果您需要
本身,另一种选择是使用

<h:commandLink>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult)}" />
    <f:param name="lfi" value="#{searchResult.index}" />

    <h:panelGroup>
        <!-- I get some info here from the searchResult object -->
    </h:panelGroup>
</h:commandLink>


@BalusC对不起,这完全是我的错(现在已经纠正了)-在漫长而疲惫的一天结束时,我问了这个问题。我没有同意。我使用HTMLPanelGrid标记是因为HTMLPanelGroup没有实现ClientBehaviorHolder。与此同时,我试图让代码正常工作,但没有成功。我是否在正确的位置使用了
ajax
param
标记?这很公平。我贴出了答案。谢谢。通常,在后台bean中使用java函数捕获ajax调用时,您会接受AjaxBehavior事件。当用ajax值将对象发送回时,所述AjaxBehavior事件会发生什么情况?我是否仍然需要捕获它,还是可以捕获我发送回的对象?
()
完全覆盖默认签名。因此,
listener=“#{bean.checkFlight()}”
需要一个
public void checkFlight()
listener=“#{bean.checkFlight(searchResult)}”
需要一个
public void checkFlight(searchResult)
,这是有意义的。谢谢你的回答,也为这个可怕的问题感到抱歉。我将尽我最大的努力不让这种情况再次发生
<h:commandLink>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult)}" />
    <f:param name="lfi" value="#{searchResult.index}" />

    <h:panelGroup>
        <!-- I get some info here from the searchResult object -->
    </h:panelGroup>
</h:commandLink>