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:
<m:link href="<c:out value='${pageContext.servletContext.contextPath}/x/xyz'/>"/>
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
<m:link href="${pageContext.servletContext.contextPath}/x/xyz"/>
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.