Составной компонент внутри пользовательского интерфейса: повторитесь, заставляет actionSource не срабатывать - PullRequest
1 голос
/ 13 октября 2011

Хорошо, я предполагаю, что это может быть ошибкой, но я не совсем уверен.Кто-нибудь может увидеть, что я делаю не так?

Вот ситуация.У меня есть составной компонент, который, кажется, отлично работает, когда он один на странице.Проблема возникает, когда компонент вложен в пользовательский интерфейс: 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>

Как видите, вызовыточно такие же, но один элемент работает, а элементы в пользовательском интерфейсе: повторить - нет.Теперь, для меня имеет смысл, что вещи будут проблематичными, когда сам компонент имеет пользовательский интерфейс: repeat.Я имею в виду, как бы вы перенастроили свой actionSource и т. Д., Не зная ID нужных вам предметов (что внутри повторения в принципе невозможно).

ОДНАКО, когда я ставлю интерфейс: повторяю за пределами компонента, я не могу обернуться, почему что-то не работает.ДЕЙСТВИТЕЛЬНО странно, что f: ajax работает совершенно нормально.Очень странно.

Я попытался добавить префикс атрибутов target к: # {cc.clientId}, и это тоже не помогло (даже если «путь» к компонентам правильный).Я делаю что-то неправильно?У кого-нибудь есть решение?

Хорошо, что-то должно быть не так, потому что даже это не работает:

<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>

Какого черта я мог пропустить?

1 Ответ

0 голосов
/ 17 октября 2011

На моей странице использовались параметры просмотра, но они не были потомками f: view, поэтому вызывали проблемы.

Когда я их переместил, все стало работать нормально.Я не уверен, почему, но кажется, что что-то ломается, когда у вас есть что-то вроде следующего за пределами f: view:

<f:metadata>
    <f:viewParam name="caseId" value="#{caseBackingBean.viewingCaseNumber}" />

</f:metadata>
<f:event type="preRenderView" listener="#{caseBackingBean.loadCase}" />

Спасибо за помощь BalusC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...