今天在为客户做一个新需求,重新做几个JSP页面和几个servlet,这本不是难事,但难在工作好几个月都没怎么碰过JSP了,用着JSTL还是有点战战兢兢,不知道会出什么问题。
1)很快,在写JS的时候用EL表达式就遇到问题啦。
直接alert(${sql})这样似乎是正确的,这里的sql是我在前一个转发到此JSP的servlet中通过request.setAttribute方法进行设入的,很明显我们在HTML代码中直接这样取是没问题的。
但这样不行,JS运行不了。想想哪里出问题了。
杯具罗,实在没办法,随便加个单引号,改成
alert('${sql}');
这次有东西啦,但出现个这个东西。
谁不知道它不是数字啊,你提醒顶个鸟用啊。
看来它不听话,我们再改,改成
alert("${sql}");
这下竟然没问题了。
直接一串东西出来了:
总算正确啦。但要记住的是,如果我们是直接跟其他JS代码进行拼接,我们并不需要双引号,而是直接写入:
var url = "<%=request.getContextPath()%>/websearch/addBookSpecial_new.jsp?sql=${sql}";
如这样,当然我们另外把它当成字符串加上也不为过。
有些童鞋可能直接拿到一串东西跟我类似的带%这样的东西直接来传,那么很杯具,它会报一下错误:
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit
相信不少东西看到这些都相当的激动啊,传个参数而已,用得着么。
不要激动,慢慢来。URL中是不允许出来那些奇怪的字符的,所以不要怪浏览器。
我们只需要将URL编一下码就OK了:
url = encodeURI(url);
url = encodeURI(url);
这里有些朋友说是一次,有些朋友说两次,不过我自己试了是两次,只有经过两次编码后,再在页面处通过:
String sql = request.getParameter("sql");
sql = java.net.URLDecoder.decode(sql,"utf-8");
进行转码就可以取出参数了,这样取出的是正常的。
2)以前就遇到过用EL表达没值的时候会输出空,这个比较郁闷,好好地一个单元格,如果你没值,连那个单元格都是面目全非的。这个不是EL表达式的问题,对,这个不是。但既然这篇文章讲到EL表达式,这个也就赖到它身上了。反正有一个问题,再多一个也不为过。
<c:forEach items="${books}" var="book">
<tr>
<td>${book.title }</td>
<td>${book.author }</td>
</tr>
</c:forEach>
外面当然有表格包含住它,并且我们为此表格的单元格设了如下样式:
table td{
border-bottom:1px solid #F0F0F0;
}
这个相信大家都看得懂,就不多说了,一般情况下这当然是没问题了。
但大家看看下面这个情况:
看到这种情况,相信你不能再淡定了。
为什么?明明设了border-bottom,是啊,是设了啊,但为什么没有啊。请注意,这种情况是在IE9的兼容模式下出现的,IE6,7,8都有同样的情况,这个估计是微软的问题。在其他浏览器上是正常的。
但有问题始终是要解决的。
解决方法很简单,我们只需要在前面的table的样式那里添加多一个:
border-collapse: collapse;
注意,是table的样式,不是td的样式。这样,我们再看一下效果。
当然,如果还有些童鞋杯具的弄不出来,可以尝试在td样式处加上:
empty-cells: show;
一般情况下就没什么问题了。
解决完问题,又要继续努力BlogWriter,希望早日完成。
- 大小: 8 KB
- 大小: 14.6 KB
- 大小: 13.6 KB
- 大小: 9.1 KB
分享到:
相关推荐
综上所述,在开发中遇到EL表达式问题时,可以通过调整web.xml文件中的JSP版本配置或在JSP页面中调整page directive指令来解决。同时,了解EL表达式在不同Java EE版本中的行为差异以及它们提供的新特性,有助于在实际...
然而,在转换过程中遇到了一个问题:JSP页面中的EL表达式没有被正确解析,而是原样输出。这显然是不正常的。 #### 三、问题定位与分析 经过排查,问题的根源在于Maven项目默认使用了Web 2.3规范。而在该规范下,EL...
然而,有时开发者可能会遇到EL表达式不工作的问题,这可能给开发过程带来困扰。本篇文章将详细探讨这个问题,并提供几种有效的解决方案。 1. **检查JSP页面的DOCTYPE** EL表达式在JSP 2.0及更高版本中默认启用。...
在项目开发中,如果遇到JSP页面无法识别或执行EL表达式,很可能是缺少了必要的依赖库,特别是`el-api.jar`和`jstl.jar`这两个核心jar包。 首先,`el-api.jar`包含了EL表达式的API定义,定义了EL表达式的语法和行为...
当遇到EL表达式无效的问题时,通常有以下几个原因: 1. **依赖库缺失**:EL表达式是基于特定的库实现的,如`jstl.jar`和`standard.jar`。`jstl.jar`包含JSTL(JavaServer Pages Standard Tag Library)的核心标签库...
如果遇到EL表达式不起作用的情况,应检查是否有人在上述三个位置设置了禁用EL的配置。同时,确保正确地在适当的作用域中设置和检索变量,以防止因作用域问题导致的错误。 总之,EL表达式在Web开发中提供了强大的...
### EL表达式函数详解 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,我们经常会遇到需要在页面上动态处理数据的情况。为了提高开发效率并确保代码的简洁性和可维护性,Java Standard...
根据文档描述,开发者在使用JavaEE 5标准构建项目的过程中遇到了一个问题:即EL表达式被当作普通的字符串处理而不显示其计算结果或所引用的值。例如,EL表达式`${2000%20}</p>`在某些情况下会被直接输出为`${2000%20...
### Tomcat 5.5.28与EL表达式的兼容性问题 Tomcat 5.5.28作为一款历史悠久的Java应用服务器,其默认配置可能并不完全支持JSP 2.0规范中的所有特性,包括EL表达式。这主要是因为Tomcat的版本与所支持的JSP版本之间...
然而,有时我们可能会遇到 JSP 不支持 EL 表达式的情况,这通常是由于服务器配置或 JSP 版本过低导致的。以下是一些解决这个问题的方法: 1. **更新 `web.xml` 配置**: 如果你的 `web.xml` 文件配置的是 Servlet ...
对于初学者而言,这是一个很好的实践和学习资源,能够解决在实际开发中遇到的问题,提高解决问题的能力。如果你在学习过程中有任何疑问,可以直接联系作者进行交流,这是一种很好的学习社区互动方式。
首先,我们遇到的问题是EL表达式在展示数据时,可能包含图片链接或其他富文本内容。为了更好地管理和呈现这些内容,我们可以采取以下策略: 1. **变量定义**: 在某些情况下,我们可能需要先将原数据存储到一个...
但在某些情况下,可能会遇到JSP不支持EL表达式的问题,本文将详细介绍这一问题及其解决方案。 #### 一、问题背景与原因分析 EL表达式的支持与JSP版本密切相关。根据描述中的信息,“默认情况下,Servlet2.3/JSP1.2...
然而,在实际开发过程中,可能会遇到EL表达式无法在JSP页面中被解析的问题,这通常与web应用的配置有关。 首先,EL表达式无法解析的问题可能与web.xml文件中配置的应用版本有关。web.xml是Web应用的标准部署描述...
在使用IDEA开发maven+springMVC项目时遇到不加载EL表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧 加载如下JSP代码: <%@ page contentType=text/html;charset=UTF-8 language=java %...
例如,问题中提到的情况,EL表达式`${owner.new}`会抛出异常,因为`new`是Java中的一个关键字,用于实例化新对象。Tomcat 7尤其对EL表达式的语法检查较为严格,不允许使用关键字作为属性名。 解决这个问题有以下几...
然而,有时我们可能会遇到JSP页面无法识别EL表达式的问题。本篇将深入探讨这个问题,并提供解决方案。 问题的核心在于,EL表达式没有被正确地解析和执行。在给定的描述中,开发者遇到了在JSP页面上尝试用EL表达式 `...
然而,在使用EL表达式时,有时候可能会遇到它不被解析,而是直接显示为字符串的问题。遇到这种情况,我们需要找到原因并解决它。 首先,我们知道在默认情况下,Servlet 2.4/JSP 2.0是支持EL表达式的。如果EL表达式...