2013-12-14 62 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> 

不要忘記更新之後重新發布項目。