الخطأ باستخدام 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-تحويل.jsp - بلدي taglib التوجيهات:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>

و لدي standard.jar و jstl.jar في /على شبكة الإنترنت-INF/lib.

هل كانت مفيدة؟

المحلول

والتعليمات البرمجية الخاصة بك هو التقاط نسخة "غير صحيح" ل x-1_0.tld، ربما بسبب قضايا CLASSPATH. أرى على سبيل المثال على بلدي CLASSPATH الحالي، لدي نسخة واحدة من الأشعة 1_0.tld التي تسمح وقت تعبيرات $ {تركيب} في هذه العلامة واحد أن يفعل ذلك. واحد في standard.jar لا يسمح تعبيرات EL، في حين أن لدي في رصيف لا.

نصائح أخرى

ولقد وجدت أن الوثائق الشمس يشير إلى URI ك

http://java.sun.com/jsp/jstl/xml

ويجري الآن دعا العلامة بشكل صحيح، لذلك كان هذا سبب المشكلة. ولكن أنا على الحصول على NullPointerException في doEndTag () ... هو همهم

ليس بالضبط, يجب عليك استخدام

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

استخدام JSTL 1.1.

للأسف standard.jar الملفات تشمل العديد من الإصدارات من *.tld الوسم على سبيل المثال.

  • ج-1_0-rt.tld
  • ج-1_0.tld
  • ج.tld
  • fmt-1_0-rt.tld
  • fmt-1_0.tld
  • fmt.tld
  • fn.tld
  • permittedTaglibs.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 على وجه التحديد استخدام JSTL 1.1 راجع للشغل إصلاحات المسألة المذكورة أعلاه, إذا كان هذا لا يعمل حاول استخدام

<%@ page isELIgnored="false" %>

الذي يحكي أساسا jsp لتقييم ش.

/srm

استخدم التعليمات البرمجية التالية:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> 

وبدلا من:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

وأنا أدرك سئل هذا السؤال قبل فترة طويلة ولكن جريت فقط في نفس المشكلة. في حالتي، والمثال تم توجيه يلي I لي لاستخدام:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

عند وأرجو أن يكون تم استخدام:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

وأنا أحدق في حل لبعض الوقت قبل اضافية على التخطيط الاستراتيجي المشترك في اوري برزت في وجهي.

تغيير <%@ taglib بادئة="c" uri="http://java.sun.com/jstl/core" %> ليس صحيحا بالنسبة لي.على مشروعي(web-نسخة التطبيق="3.0" ) IDE(MyEclipse) أرى ملف التكوين x.tld.هناك كاذبة من تحديد أي لا تسمح بتحديد مظهر ${} أو <%=%>.لذلك أنا حصلت طريقة الغش في 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 اسم "هوانغ" إلى الملف jsp مثل هذا:

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

  3. استخدام<x:out select="$casexml//案例//${node.name }" />

    يمكنني الحصول على النتيجة الصحيحة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top