2011-01-25 4 views
0

구문 적으로 요소가 동일하더라도 일부 웹 페이지에서 자르지 만 실제로는 혼란스러운 오류입니다.JSTL 태그는 자바 스크립트 호출 및 HTML 요소에서 null/empty를 반환합니다.

예를 들어,이 표시되지 않습니다 : 태그 ${field['POLL_FIELD_ENTER_QUESTION']} 문자열을 반환해야

  <main:uiInputBox 
       onDarkBG="${hasDarkBG}" 
       name="questionTitle1" 
       onblur="pollUpdateQuestion(false, false, true, this);" 
       defaultValue="&lt;${field['POLL_FIELD_ENTER_QUESTION']}&gt;" 
       styleWidth="280px"> 
      </main:uiInputBox> 

"질문을 입력". 이해할 수없는 것은 태그가 JSP 파일에서 문자열을 정상적으로 반환하지만 HTML 설명자에있는 경우입니다.

그것은 리터럴 문자열 "${field['POLL_FIELD_CHOICE']}", 그리고 그것을 표현하는 것 그 요소를 출력합니다 :

또 다른 오류가 자바 스크립트에서 나는 이런 기능이있는 경우이다. 예 :

내가 뭘 잘못하고 있으며 어떻게 해결할 수 있습니까?

+0

입니까? 그것은 별도의 파일에 있습니까? 또한 '필드'란 무엇입니까? 그것은'지도'인가? 그렇다면'Map'의 핵심은 어떤 유형입니까? 그것은'String'인가? –

+0

동일한 서버 내의 페이지 또는 다른 서버 환경의 응용 프로그램간에 페이지가 다릅니 까? 그리고 우리가 말하는 JSP 서블릿 엔진의 버전은 무엇입니까? – Pointy

+0

죄송합니다. 자세히 말씀 드리겠습니다. "field"는 인지도입니다. 자바 스크립트는 .JSP 파일 안에 있습니다. 키 - 값 쌍이 있는지 확인했습니다. 하지만 자바 스크립트에서는 빈/null을 반환합니다. – SachaK

답변

0

커스텀 태그에서 EL이 해결되지 않는 첫 번째 문제는 JSTL이 아니기 때문에 (태그입니다). 그것은 EL입니다 (그 것들 ${} 것).

사용자 정의 태그에서 EL을 사용하는 것 같습니다. <main:xxx>은 JSP 표준 태그 라이브러리 (JSTL의 약자)에 속하지 않습니다. 잘 작동하는 사용자 정의 태그에 EL을 얻으려면, 다음으로 확인해야합니다 :

  • web.xml 선언해야이 기능이 지원되는 JSP 2.0 의미 적어도 서블릿 2.4, 등.

    <web-app 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
        version="2.4"> 
    
  • <main:xxx> 태그 라이브러리의 .tld 파일은 적어도<rtexprvalue> 속성이 지원됩니다 JSP 2.0을 선언해야합니다.

    <taglib 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
        version="2.0"> 
    
  • <main:uiInputBox>.tld 파일의 defaultValue 속성은 지원 런타임 표현합니다 (EL, 그 ${} 일)를 활성화하기 위해 <rtexprvalue>true</rtexprvalue>으로 표시해야합니다. 자바 스크립트 파일에서 해결되지 않는 EL의 두 번째 문제에 관해서는


<attribute> 
    <name>defaultValue</name> 
    <rtexprvalue>true</rtexprvalue> 
</attribute> 
는, 음, 설명은 아주 간단합니다 : EL 템플릿 텍스트에 그 JSP에서 실행처럼 (2.0 이상) 파일은 .jsp 확장자 만 있습니다.

<%@page contentType="text/javascript" %> 
  • JS의 조각을 넣어 :

    • .jsp.js의 이름을 변경하고 페이지 (최상의 솔루션)의 상단에 다음 줄을 추가합니다 : 어쨌든 작동하도록하는 방법은 여러 가지가 있습니다 대신 JSP 페이지의 인라인 <script>에 있습니다 (일반적으로 좋지 않은 방법으로 보았 기 때문에 권하지 않습니다).

    • web.xml에서 JSP 서블릿에 대한지도 *.js (권장하지 않음, 반드시 jsp의 서블릿 이름에 매핑되지 않을 수 servletcontainer의 특정 JspServlet에 그것을 꽉 커플 당신의 웹 애플리케이션). 당신의 자바 스크립트 어디

      <servlet-mapping> 
          <servlet-name>jsp</servlet-name> 
          <url-pattern>*.js</url-pattern> 
      </servlet-mapping> 
      
  • +0

    두 번째 문제에 대한 제안 (최선의 해결책)을 시도했는데 문자열이 더 이상 리터럴로 읽히지 않습니다. 대신지도에서 객체를 호출하면 공백이 반환됩니다. – SachaK

    +0

    그런 다음지도가 비어 있습니다. 세션/응용 프로그램 범위 대신 요청 범위에 넣었습니까? 먼저 맵을 생성하는 서블릿을 먼저 가져와야 할 수도 있습니다. 아니면 최소한 누가 요청 범위에 그지도를 집어 넣을 책임이 있습니다. – BalusC