OLá, galera!
Tenho o seguinte problema: Tenho um objeto bar e que saber se o mesmo se encontra na lista foo. Eu sei que eu poderia fazer algo como “foo.contains(bar)”, mas estou num JSP e não gostaria de utilziar um scriplet para isso.
Então vai a pergunta: Como saber se um objeto pertence a uma lista utilizando JSTL?
Ou, ainda, como executar um método num objeto por JSTL (isso resolveria o problema de forma mais genérica)?
Eu recebi algumas dicas dos colegas de trabalho, mas achei as técnicas espartanas demais. A saber:
-Fazer um foreach comparando cada item de foo com bar.
-Criar um TagSupport par isto.
Se alguém souber responder eu agradeço!!!
Se não souber eu agraço do mesmo jeito!!! 
E me perdoem se a pergunta é estúpida demais!
Shalom!!!
JSTL como saber se um objeto pertence a uma lista
M
5 Respostas
Não tem como via JSTL padrão. Teria ou que fazer como seu amigo falou, com forEach ou criar uma Custom Tag que faria isso para você.
M
Ok, vocês Venceram!
E, para provar meu agradecimento, aí vai o source da brincadeira como contribuição:
E a definição no tld, para facilitar a vida da galera:
Valeu!!!! Obrigado pela rápida resposta!!!!
Shalom!!!!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.gov.sus.projetosus.tagsupport;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
*
* @author mluciano
*/
public class ContainsTagSupport extends TagSupport{
private Object anObject;
private List aList;
private String textIfContains;
@Override
public int doStartTag() throws JspException{
if(this.getaList() != null && this.getaList().contains(getAnObject())){
try {
pageContext.getOut().write(this.getTextIfContains());
} catch (IOException ex) {
Logger.getLogger(ContainsTagSupport.class.getName()).log(Level.SEVERE, null, ex);
}
}
return EVAL_BODY_INCLUDE;
}
/**
* @return the anObject
*/
public Object getAnObject() {
return anObject;
}
/**
* @param anObject the anObject to set
*/
public void setAnObject(Object anObject) {
this.anObject = anObject;
}
/**
* @return the aList
*/
public List getaList() {
return aList;
}
/**
* @param aList the aList to set
*/
public void setaList(List aList) {
this.aList = aList;
}
/**
* @return the textIfContains
*/
public String getTextIfContains() {
return textIfContains;
}
/**
* @param textIfContains the textIfContains to set
*/
public void setTextIfContains(String textIfContains) {
this.textIfContains = textIfContains;
}
}
<tag>
<description>Imprime um texto se um Objeto é constante de uma Lista</description>
<name>contains</name>
<tag-class>br.gov.sus.projetosus.tagsupport.ContainsTagSupport</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>aList</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.List</type>
</attribute>
<attribute>
<name>anObject</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
</attribute>
<attribute>
<name>textIfContains</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
M
Mas que isto é espartano é! 
Dá uma olhada em SimpleTag…
como o nome diz…é mais simples que o Classic Tag, que vc utilizou.
M
Obrigado pela orientação!
Vou dar uma olhada e qualquer coisa eu posto pelaí de novo!!!
Shalom!
Criado 4 de fevereiro de 2010
Ultima resposta 5 de fev. de 2010
Respostas 5
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Guia pratico de TypeScript: Melhore suas aplicacoes... Por Thiago da Silva Adriano — Casa do Codigo