2013-12-14 45 views
0

当我尝试映射自定义标签,我得到Error: 500有消息File "/customTag" not found错误在JSP中映射自定义标签

这里是我的尝试: myTag.tld

<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
    > 
    <uri>customTag</uri> 
    <tlib-version>1.0</tlib-version> 
    <tag> 
     <name>multiplier</name> 
     <tag-class>myPack.MultiplierTag</tag-class> 
     <attribute> 
       <name>input</name> 
       <required>true</required> 
       <rtexprvalue>true</rtexprvalue> 
     </attribute> 
    </tag> 

</taglib> 

jsp页面

<%@taglib uri="/customTag" prefix="operator"%> 
<% 
    String input = request.getParameter("input"); 
%> 
<operator:multiplier input="<%=input%>"></operator:multiplier> 

当我试图使用文件名访问.tld文件,那么一切都很好

+0

只是猜测,但既然你有' customTag'然后也许尝试'<%@ taglib uri =“customTag”前缀=“运营商”%>'没有'/'customTag'前。 – Pshemo

+0

@Pshemo即使这不起作用。我试过 – guptakvgaurav

回答

1

在TLD文件:添加短名称和URI从customTag到/ customTag

<short-name>operator</short-name> 
<uri>/customTag</uri> 

在JSP

< @标签库前缀= “经营者” 的uri = “/ customTag”/>

改变
+0

这里 – guptakvgaurav

+0

是什么作用短名是可选的。 JSP页面创作工具可用于使用助记符值创建名称的名称。 – Loc

+0

所以标签是我唯一需要的标签。 可以被淘汰。 – guptakvgaurav

1

我不是专家JEE但我只是根据你的榜样,例如从头首先创建了自己的tld:Servlet和JSP它似乎是:

    uri
  • 你需要指定您将在<%@taglib uri="..."所以用的名字,如果它是<uri>customTag</uri>,那么你需要使用它作为<%@taglib uri="customTag"
  • 您的标签不指定body-content,这对于你的例子可以设置为empty

所以用这个TLD尝试,你可以在/WEB-INF/tlds/myTag.tld

<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> 
    <uri>customTag</uri> 
    <tlib-version>1.0</tlib-version> 
    <tag> 
     <name>multiplier</name> 
     <tag-class>myPack.MultiplierTag</tag-class> 
     <body-content>empty</body-content> 
     <attribute> 
       <name>input</name> 
       <required>true</required> 
       <rtexprvalue>true</rtexprvalue> 
     </attribute> 
    </tag> 
</taglib> 

地方执行,你可以使用

package myPack; 

import java.io.IOException; 

import javax.servlet.jsp.JspException; 
import javax.servlet.jsp.tagext.SimpleTagSupport; 

public class MultiplierTag extends SimpleTagSupport { 
    private String input; 

    public void doTag() throws JspException, IOException { 
     getJspContext().getOut().write("Hello " + input + " <br>"); 
    } 

    public void setInput(String input) { 
     this.input = input; 
    } 
} 

和演示中,您可以使用您的早期JSP

<%@taglib uri="customTag" prefix="operator"%> 
<% 
    String input = "World";//request.getParameter("input"); 
%> 
<operator:multiplier input="<%=input%>"></operator:multiplier> 

不要忘记更新之后重新发布项目。