JSTL自定义标记变量替换

时间:2013-10-15 16:00:42

标签: jsp jstl

我在这里做错了什么:

<custom:tag param="<c:out value="${param.val}"/>" >
...
</custom:tag>

我一直在

test.jsp:6: expected `>' at ``$'' (for tag `<custom:tag>' at line 6).  The XML tag syntax is: <tag attr1='value1'>

但这很好:

<a href="<c:out value="${param.val}"/>">link</a>

显然我想避免

<custom:tag param="<%= request.getParameter("val") %>" />

在没有c:out的情况下执行此操作也不起作用,我的jstl不了解<%@ page isELIgnored ="false" %>

摘自tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>...</short-name>
  <uri>...</uri>

  <tag>
       <name>...</name>
       <tag-class>...</tag-class>
       <description>...</description>
       <attribute>
         <name>attr1</name>
         <required>true</required>
       </attribute>
       <attribute>
         <name>param</name>
         <required>true</required>
         <rtexprvalue>true</rtexprvalue>
       </attribute>
  </tag>
</taglib>

2 个答案:

答案 0 :(得分:0)

嘿,为什么要添加

<c:out value="${param.val}"/>

在param中

<custom:tag param="<c:out value="${param.val}"/>" >
...
</custom:tag>

你只需要添加

${param.val} 

如下所示              ...     

答案 1 :(得分:-2)

尝试使用。

<custom:tag param="<c:out value='${param.val}'/>" >
   ...
</custom:tag>  

这只会修复语法,因此您不会收到您在顶部发布的错误消息。 使用EL应该可行。 EL原本是JSTL的一部分。 什么只是一个简单的标签(没有自定义标签),如

<c:out value='${"Hello JSTL"}'/>

打印?