JSTL标记在Javascript调用和HTML元素中返回null/empty

JSTL标记在Javascript调用和HTML元素中返回null/empty,javascript,html,string,jsp,jstl,Javascript,Html,String,Jsp,Jstl,这是一个非常令人困惑的错误,因为它出现在我正在创建的一些网页中,但在其他网页中却没有,尽管在语法上元素是相同的 例如,这不会显示: <main:uiInputBox onDarkBG="${hasDarkBG}" name="questionTitle1" onblur="pollUpdateQuestion(false, false, true, this);"

这是一个非常令人困惑的错误,因为它出现在我正在创建的一些网页中,但在其他网页中却没有,尽管在语法上元素是相同的

例如,这不会显示:

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

我在这里做错了什么?我如何修复它?

至于在自定义标记中没有解决EL的第一个问题,那不是(这是那些
标记)。那是EL(那些
${}
东西)

您似乎在自定义标记中使用EL。
不属于任何JSP标准标记库(看,这就是JSTL的意思)。要使自定义标记中的EL也起作用,您需要确保:

  • web.xml
    必须至少声明为Servlet 2.4,这意味着支持此功能的JSP 2.0

    <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">
    
    <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"> 
    
  • .tld
    文件中的
    defaultValue
    属性必须标记为
    true
    ,以启用支持运行时表达式(EL,那些
    ${}
    东西)

  • 将这段JS放在JSP页面的内联
    中(不推荐这样做,因为这通常被认为是一种糟糕的做法)

  • web.xml
    中的JSP servlet上映射
    *.js
    (不推荐,它会将您的web应用程序与servletcontainer的特定JspServlet紧密耦合,而不一定映射到
    JSP
    的servlet名称上)

    
    jsp
    *.js
    

您的Javascript在哪里?它在一个单独的文件中吗?另外,什么是
字段
?这是一张地图吗?如果是,映射的键是什么类型的?它是一个
字符串
?在同一服务器内的页面上,还是在不同服务器环境中的应用程序之间,这是否有所不同?我们谈论的是什么版本的JSPServlet引擎?对不起,我会详细说明。“field”是一个地图,它是。javascript在.JSP文件中。我检查了键值对是否存在,它确实存在。但是在javascript上它返回空/null。我尝试了你的建议(最好的解决方案)来解决第二个问题,字符串不再作为文本读取。相反,从映射调用对象会返回一个空白。此时映射为空。它是否被放在请求范围而不是会话/应用程序范围内?您可能希望在第一个应用程序前面提供一个负责创建映射的servlet。或者至少是负责将该映射放入请求范围的人。
<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"> 
<attribute>
    <name>defaultValue</name>
    <rtexprvalue>true</rtexprvalue>
</attribute>
<%@page contentType="text/javascript" %>
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>