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="<${field['POLL_FIELD_ENTER_QUESTION']}>"
styleWidth="280px">
</main:uiInputBox>
我在这里做错了什么?我如何修复它?至于在自定义标记中没有解决EL的第一个问题,那不是(这是那些
标记)。那是EL(那些${}
东西)
您似乎在自定义标记中使用EL。
不属于任何JSP标准标记库(看,这就是JSTL的意思)。要使自定义标记中的EL也起作用,您需要确保:
必须至少声明为Servlet 2.4,这意味着支持此功能的JSP 2.0web.xml
<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
,以启用支持运行时表达式(EL,那些true
东西)${}
- 将这段JS放在JSP页面的内联
中(不推荐这样做,因为这通常被认为是一种糟糕的做法) - 在
中的JSP servlet上映射web.xml
(不推荐,它会将您的web应用程序与servletcontainer的特定JspServlet紧密耦合,而不一定映射到*.js
的servlet名称上)JSP
jsp *.js
字段
?这是一张地图吗?如果是,映射的键是什么类型的?它是一个字符串
?在同一服务器内的页面上,还是在不同服务器环境中的应用程序之间,这是否有所不同?我们谈论的是什么版本的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>