Custom Tag com SimpleTagSupport, problemas com um atributo

Boa tarde,

estou criando uma Custom Tag (nesse caso um link) porém o valor do atributo não está sendo avaliado quando se usa <c:url>

Exemplo:
Classe Java:

public class LinkTag extends SimpleTagSupport{
private String href;

public void doTag() throws JspException, IOException {
getJspContext().getOut().print(href)
}

Parte do TLD:

<attribute>
	<name>href</name>
	<required>true</required>
	<rtexprvalue>true</rtexprvalue>
	<type>String</type>
</attribute>

Uso no jsp:

<m:link href="<c:out value='/x/xyz'/>"/>

O sistema imprime literalmente “<c:out value=’/x/xyz’/>”
Quando o que eu preciso é exibir “/SERVIDOR/x/xyz”, ou seja a a expressão <c:out não está sendo avaliada.

Alguem sabe o motivo?

Boa tarde, se você estiver usando JSP 2.0 não precisa do TLD, agora em relação ao como você vai imprimir a URL talvez isso te ajude:

&lt;m:link href="&lt;c:out value='${pageContext.servletContext.contextPath}/x/xyz'/&gt;"/&gt;  

http://www.guj.com.br/java/287033-tag-jsp-com-subelementos

Valeu, AmauriSpPoa eu uso o JSP 2.0 mesmo, mas eu preciso fazer algumas tags com Java usando o SimpleTagSupport por isso eu tenho TLD.

Mas o exemplo que vc passou continua a não funcionar pois se eu passar:

<m:link href="<c:out value='${pageContext.servletContext.contextPath}/x/xyz'/>"/> 

o valor do atributo href na classe java fica: “<c:out value=‘CONTEXT/x/xyz’/>”

ou seja o JSP não está executando o c:out para passar o valor para minha TAG.

Não sei se eu consegui explicar direito, mas o valor do atributo href deveria ser “/CONTEXT/x/xyz” mas fica “<c:out value=‘CONTEXT/x/xyz’/>”.

Tenta assim

&lt;m:link href="${pageContext.servletContext.contextPath}/x/xyz"/&gt;   

AmauriSpPoa, ai funciona beleza.

Mas é que esse era só um exemplo, a minha dúvida é, por que o JSTL não é interpretado/avaliado antes do valor ser passado para o Java.

Quando eu uso expressões EL tipo “${pageContext.servletContext.contextPath}”, o valor é avaliado, mas quando eu uso JSTL o valor não é avaliado.

Alguem saberia me dizer por que?

Cara, eu não conheço profundamente a criação de Tag’s via classes Java(TLD), eu costumo fazer com o arquivo .tag e ai funciona da forma que você falou.

Talvez o Jstl seja da especificação JSP 2.0 e a TLD seja da JSP 1.0, e tenha algum tipo de incompatibilidade, mas isso é só uma suposição.