Problemas com operador ternário

7 respostas
C

Boa tarde pessoal,
Estou usando um operador ternário para pegar uma específica String na minha classe e atribuí-la ao meu Radio, o operador consegue pegar a String, no entanto ele pega apenas a primeira palavra (no meu caso é uma descrição), não conheço muito o operador ternário se alguém tiver alguma solução eu fico grato.

segue o código:

<form action="MetodoServlet" name="escolha" method="POST">
                    <table>
                        <tr>                            
                           <%if(ParedeNormas.Um == 0){  %> 
                            <td width="380">                              
                            <input type="radio" name="opcoes" id="campo" value=${minhas.MetodoUm} checked /> 
                                ${minha.MetodoUm}                              
                            </td> 
                            <% } %>        
                        </tr>
                        <tr>
                            <%if(ParedeNormas.Dois == 0){  %> 
                            <td width="380">   
                            <input type="radio" name="opcoes" id="campo2" value=${minhas.MetodoDois} /> 
                                ${minhas.MetodoDois}                                
                            </td>
                            <% } %>    
                        </tr>
                        <tr>
                            <%if(ParedeNormas.Tres == 0){  %>
                            <td width="380"> 
                            <input type="radio" name="opcoes" id="campo3" value=${minhas.MetodoTres} />    
                                ${minhas.MetodoTres}
                            </td>
                            <% } %> 
                        </tr>
                        <tr><td><br></td></tr>
                        <tr>
                            <%if(ParedeNormas.Um == 0){ %> 
                            <td width="380"><button class=" btn btn-success btn-large" type="submit" >Calcular</button> </td>
                            <% } %>
                        </tr>
                    </table>   
                    
                </form>

7 Respostas

E

O operador ternário é o “?”, certo? Onde é que ele está no seu código? Não achei o “?” nas coisas que você postou aqui.

C

Para mim o operador ternário é o ${alguma coisa}. O uso deste método foi indicação de uma amigo e o mesmo chamou disso (Se não for abuso me explique).
Mas indo ao que interessa, conhece alguma forma para resolver essa solução usando o ${alguma coisa}.

E

Ah, é que “ternário” quer dizer “3” e não consegui associar o “3” com o “$”. Ele tem um outro nome, mas me foge agora.

De qualquer forma, se o bean não estiver corretamente preenchido, ele deve mostrar na saída algo errado mesmo.

Mas acho que tem um pouco de falta de atenção aqui, sem contar que se o conteúdo da coisa tiver espaços vai dar problemas mesmo. Um exemplo no seu código:

... value=${minhas.MetodoUm} checked />   
                                ${minha.MetodoUm}
  1. O nome do bean é “minhas” ou “minha”?
  2. Se minhas.MetodoUm tiver o valor “Jose Aparecido” (um espaço no meio), o HTML que vai ser gerado provavelmente vai ser algo como:
.... value=Jose Aparecido checked />

Ou veja, ele deixou o “Aparecido” solto, sem estar associado ao atributo Value. Não tem algum par de aspas faltando no seu caso?

E

entanglement:
Ah, é que “ternário” quer dizer “3” e não consegui associar o “3” com o “$”. Ele tem um outro nome, mas me foge agora.

Seu amigo deve ter confundido o “?” (que parece uma cobrinha sobre uma pedrinha) com o “$” (que é uma cobrinha enrolada em um pilar, veja a história desse símbolo “cifrão”) e achado que “$” é o operador ternário.

C

Minha bean é “minhas”, estava errado, pois eu fiz algumas alterações. Mas este não é o problema.
O meu minhas.MetodoUm está recebendo uma String, não há erro na sintaxe. Ela recebe o seguinte “Estrutura de 48mm a cada 0,60mts”, no entanto reconhece apenas Estrutura.

Então velho se tiver alguma idéia seria ótimo, caso contrario, por hora terei de apelar para gambiarra haha.
De toda forma muito obrigado pela atenção.

E

Mas o erro da sintaxe está no HTML gerado, ora pois pois. Não deveria ser algo como:

<input type="radio" name="opcoes" id="campo" value="${minhas.MetodoUm}" checked />

Senão você vai ter, por exemplo, algo como:

<input type="radio" .... value=Estrutura de 48mm a cada 0,60mts checked />

Você viu que depois do “Estrutura” tudo são nomes de atributos “soltos” (ou seja, sem sinal de igual nem nada? )

C

Exatamante, eu achei que ao usar o ${} eu não precisava de aspas depois do igual, porém é necessário. Fiz o teste e funcionou.

Obrigado pela ajuda amigo.

Criado 29 de agosto de 2012
Ultima resposta 30 de ago. de 2012
Respostas 7
Participantes 2