Pergunta

Eu sei que isto parece um monte de texto, mas eu acho que é um conceito simples bastante que eu estou ausente.

Eu estou escrevendo uma aplicação web com Facelets. Eu tenho um rq tag personalizado: request-lista que leva uma lista de pedidos como um parâmetro e gera uma encantadora mesa para exibi-los. Tão longe, tão bom.

rq: pedido para a lista começa como você esperaria:

<!-- ... -->
<ice:dataTable value="#{list}" var="req">
    <ice:column>
        <f:facet name="header">Date last edited</f:facet>
        <ice:outputText value="#{req.dateModified}" />
    </ice:column>
<!-- ... -->

E isso acaba bem. Ele ainda tem um link na tabela para editar o pedido. Yippee!

<ice:column rendered="#{spokespersonView}">
    <f:facet name="header">Edit</f:facet>
    <h:commandLink value="Edit" action="edit_r" rendered="#{RequestSessionBean.mutable}">
        <f:setPropertyActionListener target="#{RequestSessionBean.request}" value="#{req}"/>
    </h:commandLink>
</ice:column>

Isso nos leva à página de edição, depois de definir o pedido no bean de apoio para a representada pela linha da tabela estamos. Este é onde o problema está. E é sutil.

rq: request-lista é usada várias vezes em uma página; como tal:

<ui:repeat value="#{ExperimentListBean.usersExperiments}" var="exp">
    <rq:request-list list="#{RequestListBean.requestsByExperiment[exp]}" showExperiment="false" spokespersonView="true" />
</ui:repeat>

Agora, as tabelas aparecer OK; isto é, todo o texto é certo. No entanto, os commandLinks apontar para os pedidos errados ... eles apontam para a solicitação da linha correspondente do última rq: pedido lista na página. Os dados relativos aos pedidos é emitido como deveria ser na tabela, mas {req} pontos para o pedido errado quando se trata de clicar em um commandLink.

Para reiterar, se eu tenho alguns rq: pedir-listas em uma página, no link Editar para a primeira linha de todas rq: pedido de lista de pontos para o primeiro pedido (linha) em o último rq: pedido lista na página. O link Editar para a segunda linha de cada rq : solicitação de lista de pontos para o segundo pedido (linha) da última RQ: pedido lista na página. Etc.

Como posso obter {req} para apontar para o que eu era, e não apenas ser um índice em uma lista que está desatualizado?

Obrigado!

Foi útil?

Solução

Dê uma olhada esta entrada do blog , você provavelmente usa repetição, que é executado uma vez, quando a árvore componente é construir, em vez de foreach que se avaliou a prestação de tempo. (Mas este é apenas um tiro no escuro, eu não tentou o seu exemplo)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top