ui中的复合组件:repeat,导致actionSource不触发



好的,我猜这可能是一个错误,但我不完全确定。有人能看出我哪里做错了吗?

情况是这样的。我有一个复合组件,似乎完美地工作,当它单独在页面上。当组件嵌套在ui:repeat中时,问题就出现了。下面是我调用组件的两个地方(只是为了测试):

<q:case aCase="#{userSummaryBackingBean.userCases.get(0)}">
    <f:setPropertyActionListener for="clickEvent" target="#{userSummaryBackingBean.value}" value="single"/>
    <f:ajax execute="@this" render="@this :westPaneForm"/> 
</q:case>

<ui:repeat value="#{userSummaryBackingBean.userCases}" var="aCase">
    <li>
    <q:case aCase="#{aCase}">
        <f:setPropertyActionListener for="clickEvent" target="#{userSummaryBackingBean.value}" value="repeat"/>
        <f:ajax execute="@this" render="@this :westPaneForm"/>                                                                     
    </q:case>
    </li>
</ui:repeat>

,组件定义如下:

<cc:interface>
    <cc:attribute name="aCase" type="com.autonomy.calltrack.data.dto.Case"/>
    <cc:actionSource name="clickEvent" targets="caseCommandLink"/> 
    <cc:attribute name="action" targets="caseCommandLink" />
    <cc:attribute name="actionSource" targets="caseCommandLink" />
    <cc:clientBehavior name="click" event="action" targets="caseCommandLink" default="true"/>
</cc:interface>
<cc:implementation>

<h:commandLink id="caseCommandLink" styleClass="case ui-state-default" title="#{cc.clientId}">

--- more code ---
</h:commandLink>
</cc:implementation>

正如你所看到的,调用是完全相同的,但是单个项可以工作,而ui:repeat中的项不起作用。现在,当组件本身具有ui:repeat时,事情就会出现问题,这对我来说是有意义的。我的意思是,如果你不知道你需要的物品的ID,你如何重新定位你的actionSource等(在重复中,这基本上是不可能的)。

然而,当我把ui:repeat放在组件外部时,我无法理解为什么事情不能工作。真正奇怪的是,ajax似乎完全正常工作。非常奇怪。

我已经尝试了前缀目标属性:#{cc。这也没有帮助(即使组件的"路径"是正确的)。我做错了什么吗?有人有解决办法吗?

好吧,肯定有什么地方出错了,因为连这个都不起作用:

<ui:repeat value="#{userSummaryBackingBean.userCases}" var="aCase">
        <h:commandLink id="caseCommandLink" value="test" styleClass="case ui-state-default">
            <f:setPropertyActionListener target="#{userSummaryBackingBean.value}" value="REPEAT"/>
            <f:ajax execute="@this" render="@this :westPaneForm"/>       
        </h:commandLink>
</ui:repeat>

我到底错过了什么?

我的页面正在使用视图参数,但它们不是f:view的子参数,所以它们会引起问题。

当我移动它们时,一切都开始正常工作了。我不知道为什么,但当你在f:view:

之外有以下内容时,事情似乎会中断。
<f:metadata>
    <f:viewParam name="caseId" value="#{caseBackingBean.viewingCaseNumber}" />
</f:metadata>
<f:event type="preRenderView" listener="#{caseBackingBean.loadCase}" />

感谢您的帮助。

相关内容

  • 没有找到相关文章

最新更新