jstl xml taglib를 사용하는 오류 - 속성 XML은 어떤 표현식도 허용하지 않습니다.
문제
JSTL XML Taglib을 사용하려고 할 때 다음과 같은 오류가 발생합니다.
/server-side-transform.jsp(51,0)
According to TLD or attribute directive in tag file,
attribute xml does not accept any expressions
나는 TLD 등을 조사하고 있지만, 이것이 무엇인지 아는 사람이라면 시간을 절약 할 수 있다면 감사하겠습니다!
도움이되면 예제 코드를 실행하는이 오류가 발생합니다.
<c:set var="xml">
<paragraph>
This document uses <bold>unusual</bold> markup,
which we want to replace with <bold>HTML</bold>.
</paragraph>
</c:set>
<c:set var="xsl">
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="bold">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>
</c:set>
<x:transform xml="${xml}" xslt="${xsl}"/>
내 /server-side-transform.jsp에서-내 taglib 지시문은 다음과 같습니다.
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
/web-inf /lib in 표준 .jar 및 jstl.jar가 있습니다.
해결책
코드는 클래스 경로 문제로 인해 "잘못된"버전의 x-1_0.tld를 선택하고 있습니다. 예를 들어 현재 ClassPath에서 볼 수 있습니다.이 태그에서 런타임-표현 $ {syntax}를 허용하는 x-1_0.tld 버전이 하나 있고 그렇지 않은 버전이 있습니다. Jar는 표준의 표현을 허용하지 않지만 부두에있는 것은 El 표현을 허용하지 않습니다.
다른 팁
나는 태양 문서가 URI를
http://java.sun.com/jsp/jstl/xml
태그는 이제 올바르게 호출되고 있으므로 이것이 문제의 원인이었습니다. 그러나 나는 doendtag ()에서 nullpointerexception을 받고 있습니다.
정확히 사용해야합니다
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSTL 1.1을 사용합니다.
불행히도 Standard.jar 파일에는 예를 들어 많은 버전 *.tld 태그가 포함되어 있습니다.
- C-1_0-RT.TLD
- C-1_0.tld
- C.tld
- FMT-1_0-Rt.tld
- FMT-1_0.tld
- fmt.tld
- fn.tld
- 허가 Taglibs.tld
- ScriptFree.tld
- SQL-1_0-Rt.tld
- SQL-1_0.tld
- sql.tld
- x-1_0-rt.tld
- x-1_0.tld
- x.tld
그래서 사용함으로써
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSP에 BTW가 위의 문제를 해결하는 JSTL 1.1을 구체적으로 사용하도록 지시합니다.
<%@ page isELIgnored="false" %>
기본적으로 JSP에게 EL을 평가하도록 지시합니다.
/srm
다음 코드를 사용하십시오.
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
대신에:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
나는이 질문이 꽤 오래 전에 질문을 받았다는 것을 알고 있지만 나는 단지 같은 문제에 부딪쳤다. 제 경우에는 내가 따랐던 예는 다음을 사용하도록 지시했습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
내가 사용했을 때 :
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
나는 추가 전에 솔루션을 쳐다보고 있었다. JSP Uri에서 나에게 튀어 나왔다.
변경 < %@ taglib prefix = "c"uri = "http://java.sun.com/jstl/core" %>는 나에게 적합하지 않습니다. 내 프로젝트 (Web-App version = "3.0") IDE (myeclipse) x.tld의 구성 파일이 표시됩니다. select select apperance $ {} 또는 <%=%>를 허용하지 않는 Select의 허위가 있습니다. 그래서 나는 web.xml에서 속이는 방법을 얻었습니다.
<jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config>
web.xml에 추가하십시오새로운 taglib-url 이름 "Huang"을 다음과 같은 내 JSP 파일로 선언하십시오.
<%@ taglib prefix="x" uri="/huang" %>
사용
<x:out select="$casexml//案例//${node.name }" />
올바른 결과를 얻을 수 있습니다