1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Carregar target de uma Picklist

Tenho uma picklist de fornecedores por produto,mas tem certos produtos que ja tem seus fornecedores default,o que eu quero fazer é que minha source venha com todos os os fornecedores e minha target ja venha com os fornecedores dafault do produto,ex:se eu tenho 100 fornecedores e o produto tem 3 já default,ficaria 97 na souce e 3 na target,sem precisar selecionar nem add nada,a tela já me carregaria isso como pardão,só depois eu poderia adicionar mais fornecedores ou removê-los

Xhtml

<div id="SelecaoFornec" class="tab-pane fade active in">
     <rich:panel style="width:915px;">
        <f:facet name="header">
            <h:outputText value="Selecione Fornecedores"></h:outputText>
        </f:facet>
        <rich:pickList
            value="#{selecaoFornecedorAction.listaTargetFornecedores}"
            listHeight="200px" sourceCaption="Fornecedores" id="plFornecedor"
            targetCaption="Selecionados" listWidth="350px"
            orderable="true" converter="converter.FornecedorConverter">
            <f:selectItems
                value="#{selecaoFornecedorAction.listaSourceFornecedores}"
                var="fornecedor" itemValue="#{fornecedor}"
                itemLabel="#{fornecedor.nome}" />
        </rich:pickList>
    </rich:panel>
</div>

Converter

public class FornecedorConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent arg1, String nomeFornecedor) {
        SelecaoFornecedorAction bean = context.getApplication().evaluateExpressionGet(context, "#{selecaoFornecedorAction}", SelecaoFornecedorAction.class);
        Map<String, Object> mapa = bean.getMapaFornecedor();
        if (mapa.containsKey(nomeFornecedor)) {
            return mapa.get(nomeFornecedor);
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object fornecedor) {
        if (fornecedor == null)
            return null;
        return ((TbFornecedor) fornecedor).getNome();
    }
}

Usando o converter

public Map<String, Object> getMapaFornecedor() {
        Map<String, Object> retorno = new HashMap<String, Object>();
        TbFornecedor tbFornecedor;
        List<TbFornecedor> listaHMFornecedor = listaSourceFornecedores;
        for (Iterator<TbFornecedor> itFor = listaHMFornecedor.iterator(); itFor.hasNext();) {
            tbFornecedor = itFor.next();
            retorno.put(tbFornecedor.getNome(), tbFornecedor);
        }
        return retorno;
    }

Action-povoando minhas listas

public void carregarListaFornecedor() {
        try {
            listaTargetFornecedores = selecaoFornecedorRN.carregarListaTargetFornecedor();
            listaSourceFornecedores = selecaoFornecedorRN.ajustarListaSourceFornecedor(listasBean.listaFornecedores(), listaTargetFornecedores);
        } catch (Exception e) {
            Mensagem.mostrarMensagem(Mensagem.ERROR, e.getMessage());
            e.printStackTrace();
        }
    }

Carregar target

@Override
    public List<TbFornecedor> carregarListaTargetFornecedor() {
        List<TbFornecedor> listaRetorno = new ArrayList<TbFornecedor>();
        TbColetaPrecoProduto tbColetaPrecoProduto = instanceServiceColetaPrecoProduto.getTbInstancia();
        TbColetaPrecoProdutoFornecedor tbColetaPrecoProdutoFornecedor;
        for (Iterator<TbColetaPrecoProdutoFornecedor> itColetaPrecoProdutoFornecedor = tbColetaPrecoProduto.getListaColetaPrecoProdutoFornecedores().iterator(); itColetaPrecoProdutoFornecedor
                .hasNext();) {
            tbColetaPrecoProdutoFornecedor = itColetaPrecoProdutoFornecedor.next();
            listaRetorno.add(tbColetaPrecoProdutoFornecedor.getTbColetaPrecoFornecedor().getTbFornecedor());
        }
        return listaRetorno;
    }

Carregar source

@Override
    public List<TbFornecedor> ajustarListaSourceFornecedor(List<TbFornecedor> listaSourceFornecedores, List<TbFornecedor> listaTargetFornecedores) {
        TbFornecedor tbFornecedorTarget;
        for (Iterator<TbFornecedor> itFornec = listaTargetFornecedores.iterator(); itFornec.hasNext();) {
            tbFornecedorTarget = itFornec.next();
            if (listaSourceFornecedores.contains(tbFornecedorTarget)) {
                listaSourceFornecedores.remove(tbFornecedorTarget);
            }
        }
        return listaSourceFornecedores;
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags richfaces xhtml conversão ou faça a sua própria pergunta.