簡體   English   中英

通過屬性或正文將XML文檔傳遞到JSP定制標記

[英]Pass XML document via attribute or body to JSP custom tag

我想知道是否可以通過以下方式將xml文檔傳遞給 jstl定義的JSP自定義標記:自定義標記的主體,例如:

<mt:mytag>
    <people>
        <person name="bob" age="23" />
        <person name="sue" age="45" />
        <person name="moe" age="35" />
    </people>
<mt:mytag>

或作為標簽的屬性,如下所示:

<mt:mytag message="http://link.to.document.xml" />

這是標簽本身

<%@tag description="xml parser" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@attribute name="message"%> OR <jsp:doBody var="message" />
<x:parse var="a" doc="${message}" />
<x:forEach var="current" select="$a/people/person">
    <ul>
        <li>
            Name <x:out select="$current/@name" /> age <x:out select="$current/@age" />
        </li>
    </ul>
</x:forEach>

可以從jsp頁面內部使用jstl處理xml,基本上是在forEach之后復制代碼並將其粘貼到jsp中。 它甚至可以在頁面請求中獲取xml作為POST / GET參數並在頁面中對其進行處理。

否則,在執行上述示例時,會出現此類錯誤:

PWC6197: An error occurred at line: 9 in the jsp file: /WEB-INF/tags/test2.tag
PWC6199: Generated servlet error:
cannot access javax.servlet.jsp.jstl.core.LoopTagSupport
class file for javax.servlet.jsp.jstl.core.LoopTagSupport not found

PWC6197: An error occurred at line: 9 in the jsp file: /WEB-INF/tags/test2.tag
PWC6199: Generated servlet error:
cannot find symbol
symbol:   method setPageContext(javax.servlet.jsp.PageContext)
location: variable _jspx_th_x_forEach_0 of .......

請注意,完全可以在非純JSTL(帶有Java代碼)中處理正文內容或屬性鏈接,只是想知道JSTL + EL是否具有這樣的功能。

編輯:分辨率

Netbeans IDE似乎有一個錯誤 ,即默認情況下不添加JSTL庫。 您可以通過庫->添加庫->導入-> Jstl 1.1->添加庫來修復它

這可行。

<%@ taglib tagdir="/WEB-INF/tags" prefix="mt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<c:set var="message">
    <people>
        <person name="bob" age="23" />
        <person name="sue" age="45" />
        <person name="moe" age="35" />
    </people>
</c:set>
<mt:mytag message="${message}" />

實際上,您的第一個代碼塊(使用主體)也對我有用。 如果要使用文件,請使用以下內容。

<%@ taglib tagdir="/WEB-INF/tags" prefix="mt" %>
<mt:mytag messageUrl="http://link.to.document.xml" />

和標記文件;

<%@tag description="xml parser" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@attribute name="messageUrl"%>
<c:import url="${messageUrl}" var="message" />
<x:parse var="a" doc="${message}" />
<x:forEach var="current" select="$a/people/person">
    <ul>
        <li>
            Name <x:out select="$current/@name" /> age <x:out select="$current/@age" />
        </li>
    </ul>
</x:forEach>

關於您的錯誤消息,請告訴我們您正在使用哪個Web服務器。 還請告訴我們您下載了哪些JSTL jar,以及從何處下載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM