Olá pessoal,
Estou trabalhando num framework Ajax próprio, voltado a interfaces WEB que imitam sistemas tradicionais, IDE’s Delphi e VB.
Agora falta a adaptação dos códigos HTML + JavaScript para TagLibs, no entando é a primeira vez que crio Tags no Java.
Resumindo estou com um problema bem chato, não consigo passar um parâmetro dinâmico para um atributo qualquer de uma tag.
Por exemplo:
<my:tabPanel label="Clientes:">
<my:tabBar label="Busca" active="true" />
<my:tabBar label="Dados" link="?cliId=<%=mybean.getCliId()%>" />
</my:tabPanel>
O código <%=mybean.getCliId()%> não é interpretado por algum motivo!
O desenvolvimento de um framework é muito trabalhoso, se tiver alguém interessado em participar… encaminho os fontes.
Sem mais…
[]'s
ao invés de <% … bla bla bla %>
Tente {objeto.propriedade}
abraço…
na verdade é ${objeto.propriedade}
[quote=zirocool]ao invés de <% … bla bla bla %>
Tente {objeto.propriedade}
abraço…[/quote]
Usando ${mybean.getCliId()} ocorre o seguinte erro:
According to TLD or attribute directive in tag file, attribute label does not accept any expressions
Pesquisei e encontrei o seguinte:
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager
...
public static Object evaluate(String attributeName,
String expression,
Class expectedType,
Tag tag,
PageContext pageContext);
Ainda não sei se é esse o caminho…
nao era bem isso…
ehhehe
tenta assim oh ${mybean.clicId}
tem que ser o nome do teu atributo, nao o teu método…
com JSTL funciona assim… nao sei se tem uma implentação especial por trás pra interpertar esse ${._}
Mas dah uma experimentada…
[quote=zirocool]nao era bem isso…
ehhehe
tenta assim oh ${mybean.clicId}
tem que ser o nome do teu atributo, nao o teu método…
com JSTL funciona assim… nao sei se tem uma implentação especial por trás pra interpertar esse ${._}
Mas dah uma experimentada… [/quote]
Não funcionou, tentei assim tabém…
<% String cliId = (String) request.getParameter(“cliId”); %>
<my:tabPanel id=“CliIspm” label=“Clientes Ativos: ${cliId}”>
Queria implementar a minha teg como o exemplo:
<jsp:include>
<jsp:param name="cliId" value="<%=cliId%>" />
</jsp:include>
Olha o que encontrei:
Pergunta:
In the .tld files, every attribute looks like this. But I can’t find
anything anywhere about the third one: rtexprvalue, and when to set it
true and false.
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
Resposta:
It stands for “RUN-TIME EXPRESSION VALUE”
It is describe the type of attribute for custom action tag whether
it is evaluated at run-time or not.
BTW: In the JSP 1.1 Spec note you can do this:
Fonte: http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14825.html
Mas não adiantou no meu caso… :shock:
Mano, posta todo o teu fonte aih da tua tag pra poderem te ajudar, e coloca o teu xml tbm.
[ ]'s…
http://java.sun.com/javaee/5/docs/tutorial/doc/JSPTags7.html#wp90543
Aqui, tem uma parte que explica como usar akeles atributos que eu te falei.
Ah, detalhe, esses atributos no formato ${objeto.campo}, geralmente é pego da sessao, ou da request.
Teu MyBean, tu tah enviando ele por requisição??
tu pode fazer tbm usando as diretivas jsp
<jsp useBean="…" / > e tal, e pegando no formato ${objeto.campo}, com o id da tua declaração…
<jsp:useBean id="contato" type="br.unisc.model.Contato" scope="request" />
tipo o exemplo acima, daih para mim exibir em uma tag qualquer, eu faria com a <c:out /> o seguinte:
<c:out value="${contato.nome}" />
Resolvido o problema!
A propriedade do atributo na .tld true funciona sim, é que no caso da tag interna que desenvolvi faço o acúmulo de string num atributo da tag pai e ela no doEndTag imprime todo o resultado.
Preciso entender melhor como funciona esse parâmetro para corrigir a minha tag em específico.
Para um teste que fiz de uma tagPai e outras filhas que jogam o resultado no pageContext diretamente funcionou!
Esclarecendo…
Quando se define que um atributo é interpretado em RUN-TIME true não se pode enviar dados mistos no atributo como o abaixo:
<my:tag attr=“static?var=<%=dinamic %>” />
O certo é:
<my:tag attr="<%=“static?var=”+ dinamic %>" />