jstl xml taglib를 사용하는 오류 - 속성 XML은 어떤 표현식도 허용하지 않습니다.

StackOverflow https://stackoverflow.com/questions/377513

  •  22-08-2019
  •  | 
  •  

문제

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에서 속이는 방법을 얻었습니다.

  1. <jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config> web.xml에 추가하십시오

  2. 새로운 taglib-url 이름 "Huang"을 다음과 같은 내 JSP 파일로 선언하십시오.

    <%@ taglib prefix="x" uri="/huang" %>

  3. 사용<x:out select="$casexml//案例//${node.name }" />

    올바른 결과를 얻을 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top