awilaz
Novembro 25, 2008, 2:39pm
#1
Boa tarde a todos,
Estou tentando fazer um drag drop e já verifiquei os exemplos disponíveis no site do richfaces, mas quando arrasto o objeto os dataTable não renderizam…
segue o código do metodo do meu manageBean
public void processDrop(DropEvent dropEvent) {
Dropzone dropzone = (Dropzone) dropEvent.getComponent();
Object produtoArrastado = dropEvent.getDragValue();
Object dropValue = dropzone.getDropValue();
if ("SELECIONADO".equals(dropValue)) {
if (produtosDisponiveis.contains(produtoArrastado)){
int indiceProdutoSelecionado = produtosDisponiveis.indexOf(produtoArrastado);
produtosSelecionados.add(produtosDisponiveis.get(indiceProdutoSelecionado));
produtosDisponiveis.remove(indiceProdutoSelecionado);
}
}
}
E agora o codigo no meu xhtml
<rich:dragIndicator id="indicator" />
<h:panelGrid columnClasses="panelc" columns="4" width="100%">
<rich:panel style="width:133px">
<f:facet name="header">
<h:outputText value="disponivel" />
</f:facet>
<h:dataTable id="src" columns="1" value="#{produtoOferecidoBean.produtosDisponiveis}"
var="fm" footerClass="footerClass">
<h:column>
<a4j:outputPanel
style="width:100px;border:1px solid gray;padding:2px"
layout="block">
<rich:dragSupport dragIndicator=":indicator"
dragType="PRODUTO" dragValue="#{fm}">
<rich:dndParam name="label" value="#{fm.nome}" />
</rich:dragSupport>
<h:outputText value="#{fm.nome}"></h:outputText>
</a4j:outputPanel>
</h:column>
<f:facet name="footer">
<a4j:commandButton action="#{produtoOferecidoBean.reset}" value="Start Over"
reRender="src,phptable" />
</f:facet>
</h:dataTable>
</rich:panel>
<rich:panel styleClass="dropTargetPanel">
<f:facet name="header">
<h:outputText value="Produtos Selecionados" />
</f:facet>
<rich:dropSupport id="php" acceptedTypes="PRODUTO"
dropValue="SELECIONADO"
dropListener="#{produtoOferecidoBean.processDrop}"
reRender="phptable, src">
</rich:dropSupport>
<h:dataTable id="phptable" columns="1"
value="#{produtoOferecidoBean.produtosSelecionados}" var="fm">
<h:column>
<h:outputText value="#{fm.nome}"></h:outputText>
</h:column>
</h:dataTable>
</rich:panel>
</h:panelGrid>
<a4j:outputPanel ajaxRendered="true">
<h:messages></h:messages>
</a4j:outputPanel>
</rich:panel>
Não percebo nenhum erro a não ser a mensagem : org.richfaces.renderkit.html.HtmlRichMessageRenderer doEncodeEnd
Será que alguém já passou por isso??
Qualquer ajuda será bem vinda…
Oi awilaz,
Bom to com uma duvida igual a sua… preciso usar esse componente e estou com dificuldades… sera q vc resolveu ja??
se puder me ajudar…rsrs
awilaz
Setembro 23, 2009, 11:45am
#3
Olá… resolvi sim o meu ficou assim:
<div id="comp" style="display:none; border:none;">
<rich:dragIndicator id="indicator" />
<h:form id="form">
<table width="100%" border="0">
<tr>
<td>
<rich:datascroller align="left" for="src" maxPages="20" id="sc3" />
<rich:spacer height="30" />
<rich:dataTable id="src"
value="#{produtoOferecidoBean.produtosDisponiveis}" var="fm"
footerClass="footerClass" width="400px" columnsWidth="50%, 25%, 25%" rows="5">
<f:facet name="header">
<h:outputText value="Produtos Disponiveis"/>
</f:facet>
<rich:column sortBy="#{fm.nome}" filterBy="#{fm.nome}"
filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<a4j:outputPanel>
<rich:dragSupport dragIndicator=":indicator" dragType="PRODUTO"
dragValue="#{fm}">
<rich:dndParam name="label" value="#{fm.nome}" />
</rich:dragSupport>
<h:outputText value="#{fm.nome}"></h:outputText>
</a4j:outputPanel>
</rich:column>
<rich:column sortBy="#{fm.marca.nome}" filterBy="#{fm.marca.nome}"
filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="Marca" />
</f:facet>
<h:outputText value="#{fm.marca.nome}"></h:outputText>
</rich:column>
<rich:column sortBy="#{fm.medida.nome}" filterBy="#{fm.medida.nome}"
filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="Medida" />
</f:facet>
<h:outputText value="#{fm.medida.nome}"></h:outputText>
</rich:column>
<f:facet name="footer">
<a4j:commandButton action="#{produtoOferecidoBean.reset}"
value="Iniciar" reRender="src,phptable,sc3,php" styleClass="comp"/>
</f:facet>
</rich:dataTable>
</td>
<td>
<rich:panel styleClass="dropTargetPanel" style="border:none;">
<rich:dropSupport id="php" acceptedTypes="PRODUTO"
dropValue="PRODUTO"
dropListener="#{produtoOferecidoBean.processDrop}"
reRender="phptable, src">
</rich:dropSupport>
<rich:dataTable id="phptable" value="#{produtoOferecidoBean.comps}"
var="fm" columnsWidth="60%, 20%, 20%" width="400px">
<f:facet name="header">
<h:outputText value="Composicao"/>
</f:facet>
<rich:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{fm.produto.nome}"></h:outputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Quantidade" />
</f:facet>
<h:inputText value="#{fm.quantidade}" size="4" onkeypress="mascara(this,soNumeros);"
style="text-align: right;"></h:inputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Quantidade" />
</f:facet>
<h:outputLabel value="#{fm.produto.medida.nome}" ></h:outputLabel>
</rich:column>
<f:facet name="footer">
<a4j:commandButton action="#{produtoOferecidoBean.calculaPrecoMedio}"
value="Fim" reRender="src,phptable, sc3, custo" styleClass="comp" onclick="renderizaPrecoLucro();"/>
</f:facet>
</rich:dataTable>
</rich:panel>
</td>
</tr>
</table>
</h:form>
</div>
e o meu bean
public void processDrop(DropEvent dropEvent) {
Dropzone dropzone = (Dropzone) dropEvent.getComponent();
Object produtoArrastado = dropEvent.getDragValue();
Object dropValue = dropzone.getDropValue();
if ("PRODUTO".equals(dropValue)) {
if (produtosDisponiveis.contains(produtoArrastado)){
int indiceProdutoSelecionado = produtosDisponiveis.indexOf(produtoArrastado);
Componente comp = new Componente();
comp.setProduto(produtosDisponiveis.get(indiceProdutoSelecionado));
comps.add(comp);
produtosDisponiveis.remove(indiceProdutoSelecionado);
}
}
}
Espero que ajude… se tiver duvidas me diga.
Pow awilaz, vlw …
Funciono sim… agora so acertar umas coisinhas…
muito obrigada pela ajuda…