[RESOLVIDO] - RichFaces suggestionBox setar valor no onselect

10 respostas
G

Pessoal,

Tenho o seguinte código:

<h:inputHidden
                                        id="cityId"
                                        value="#{city.id}"/>
                                <h:inputText
                                        id="city"
                                        size="50"
                                        required="true"
                                        maxlength="60"
                                        value="#{city.name}"/>
                                <rich:suggestionbox
                                        var="c"
                                        for="city"
                                        id="suggestCity"
                                        minChars="3"
                                        bgcolor="#FFFFFF"
                                        onsubmit="_loading(true)"
                                        oncomplete="_loading(false)"
                                        timeout="2000"
                                        suggestionAction="#{accountAction.suggestionCity}"
                                        height="200"
                                        width="260">
                                    <h:column>
                                        <h:outputText value="#{c.name}"/>
                                    </h:column>
                                </rich:suggestionbox>

Gostaria de saber como eu faço para ao selecionar um item da suggestion e ela me setar o valor no campo hidden. Ela é uma suggestion de cidades e gostaria que ela setasse o valor do city.id no campo hidden ali acima.

10 Respostas

G

Consegui uma maneira de setar o valor.

Basta setar o seguinte código na suggestion:

onobjectchange="setCityId(suggestion)"
usingSuggestObjects="true"

E fazer o seguinte javascript:

function setCityId(suggestionBox) {
            var items = suggestionBox.getSelectedItems();
            if (items.length > 0) {
                jq("input[id$='cityId']").val(items[0].id);//jQuery setando o valor no campo hidden
            }
        }
T

Olá irmão !

Uma sugestão que resolveria tambem, porem sem a necessidade do uso de javascript, seria o trecho abaixo:

<rich:suggestionBox

var=“produto"

fetchValue=”#{produto.descricao}“

suggestionAction=”#{produtoAction.autocompletar}">

<h:column>

<h:outputText value="#{produto.nome}" />

</h:column>

<a4j:support event=“onselect”>

<f:setPropertyActionListener

value="#{produto.codigo}“

target=”#{produtoSession.idProduto}"/>

</a4j:support>

</rich:suggestionBox>

Espero ter ajudado.
Fica com Deus.

Atenciosamente,

André Tricano.

G

tricano:
Olá irmão !

Uma sugestão que resolveria tambem, porem sem a necessidade do uso de javascript, seria o trecho abaixo:

<rich:suggestionBox

var=“produto"

fetchValue=”#{produto.descricao}“

suggestionAction=”#{produtoAction.autocompletar}">

<h:column>

<h:outputText value="#{produto.nome}" />

</h:column>

<a4j:support event=“onselect”>

<f:setPropertyActionListener

value="#{produto.codigo}“

target=”#{produtoSession.idProduto}"/>

</a4j:support>

</rich:suggestionBox>

</blockquote>

Pois é, eu tentei essa opção mas não surtil efeito. Estranhei, dai passei a usar a do javascript.

Valeu!

T

Pra ser sincero irmão, eu utilizo e está funcionando direitinho. Talvez seja alguma biblioteca do componente com bug que talvez tenha sido corrigido.
Espero ter ajudado.

Fica com Deus irmão.

G

tricano:
Pra ser sincero irmão, eu utilizo e está funcionando direitinho. Talvez seja alguma biblioteca do componente com bug que talvez tenha sido corrigido.
Espero ter ajudado.

Fica com Deus irmão.

Tu estas usando o Seam nessa tua aplicação? Estou usando seam aqui. E outra, o escopo do bean que estou usando é EVENT(request).

T

giulianocosta:
tricano:
Pra ser sincero irmão, eu utilizo e está funcionando direitinho. Talvez seja alguma biblioteca do componente com bug que talvez tenha sido corrigido.
Espero ter ajudado.

Fica com Deus irmão.

Tu estas usando o Seam nessa tua aplicação? Estou usando seam aqui. E outra, o escopo do bean que estou usando é EVENT(request).

Não estou utilizando Seam. Meu bean tem o mesmo escopo.
Mas qual erro é exibido ? O que acontece ?

J

Olá Pessoal,

Sei que o problema já foi resolvido, mas estava com o mesmo problema agora, e consegui resolver sem usar javascript, do mesmo jeito que o tricano falou, só que tive que acrescentar o reRender=“idPerfilUsuario” para renderizar o meu id.

Fazendo isso funcionou blz.

Abraço!

E

Colegas estou com esse problemas porém não consigo utilizar a solução citada.

Quando tento utilizar

<f:setPropertyActionListener
value="#{produto.codigo}"
target="#{produtoSession.idProduto}"/>

não consigo pois não existe setPropertyActionListener como opção para utilizar ou seja, digito f: porém setPropertyAction… não está na relação.

O que devo atualizar para conseguir aplicar tal solução?

Grato!

T

Utilize a versão 1.2 do JSF

T

giulianocosta:
tricano:
Olá irmão !

Uma sugestão que resolveria tambem, porem sem a necessidade do uso de javascript, seria o trecho abaixo:

<rich:suggestionBox

var=“produto"

fetchValue=”#{produto.descricao}“

suggestionAction=”#{produtoAction.autocompletar}">

<h:column>

<h:outputText value="#{produto.nome}" />

</h:column>

<a4j:support event=“onselect”>

<f:setPropertyActionListener

value="#{produto.codigo}“

target=”#{produtoSession.idProduto}"/>

</a4j:support>

</rich:suggestionBox>

</blockquote>

Pois é, eu tentei essa opção mas não surtil efeito. Estranhei, dai passei a usar a do javascript.

Valeu!

Fiz uns testes e funcionou, mas para isso eu precisei usar keepAlive do ajax4jsf, acredito que o MBean dele esteja com scopo de sessão!!!

Criado 25 de junho de 2009
Ultima resposta 27 de jan. de 2010
Respostas 10
Participantes 5