jsp用jstl标签比较枚举
日向博客最近在优化,有这一样一个小问题,我希望在下面的消息中心页面,未读的消息链接显示蓝色,已读的消息显示红色:

这就需要用jstl做一个判断。
之前的代码是这种形式:
消息中心:<br>
<c:forEach items="${msgPage.content}" begin="0" end="15" step="1" var="msg">
<!-- 如果消息类型为评论 -->
<div id="msg_line">
<c:choose>
<c:when test="${empty msg.sender.username}">
一名游客在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:when>
<c:otherwise>
用户 ${msg.sender.username}在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:otherwise>
</c:choose>
</div>
</c:forEach>
msg.content是后台传来的Message对象的List。遍历显示在页面。
Message实体类的代码:
package sonn.entity; import java.util.Date; import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne; import sonn.enums.MsgIsRead;
import sonn.enums.MsgType; /**
* @ClassName: Message
* @Description: entity class of message
* @author sonne
* @date 2016-12-23 20:32:16
* @version 1.0
*/
@Entity
public class Message { /*id*/
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id; private String content; @OneToOne(fetch = FetchType.EAGER)
private User sender; @OneToOne(fetch = FetchType.EAGER)
private User reciever; private MsgType type; private MsgIsRead is_read; private Date date; @OneToOne(fetch = FetchType.EAGER)
private Article article; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public User getSender() {
return sender;
} public void setSender(User sender) {
this.sender = sender;
} public User getReciever() {
return reciever;
} public void setReciever(User reciever) {
this.reciever = reciever;
} public MsgType getType() {
return type;
} public void setType(MsgType type) {
this.type = type;
} public Date getDate() {
return date;
} public void setDate(Date date) {
this.date = date;
} public Article getArticle() {
return article;
} public void setArticle(Article article) {
this.article = article;
} public MsgIsRead getIs_read() {
return is_read;
} public void setIs_read(MsgIsRead is_read) {
this.is_read = is_read;
} }
我需要的是根据enum字段is_read来判断是否已读。
package sonn.enums;
public enum MsgIsRead {
Yes, No;
}
于是我最初写下下面的代码:
<%@ page import="sonn.enums.MsgIsRead" %>
.............................
<c:choose>
<c:when test="${empty msg.sender.username}">
<c:choose>
<c:when test="${msg.is_read eq MsgIsRead.No}">
一名游客在${fn:substring(msg.date,0,16)}评论了你的文章<a style="color:red" href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:when>
<c:otherwise>
一名游客在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${msg.is_read eq MsgIsRead.No}">
用户 ${msg.sender.username}在${fn:substring(msg.date,0,16)}评论了你的文章<a style="color:red" href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:when>
<c:otherwise>
用户 ${msg.sender.username}在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
上面代码是没有效果的,我以为页面最上方引入了<%@ page import="sonn.enums.MsgIsRead" %>的话,jstl标签就可以获取这个enum对象了。
实际上,jstl标签获取变量的范围只是pageScope, sessionScope, requestScope, applicationScope……
所以,为了获取这个enum需要在判断前先set一下:
<%@ page import="sonn.enums.MsgIsRead" %>
..........................................................................................
消息中心:<br>
<c:set var="Not_Read" value="<%=MsgIsRead.No%>"/>
<c:forEach items="${msgPage.content}" begin="0" end="15" step="1" var="msg">
<!-- 如果消息类型为评论 -->
<div id="msg_line">
<c:choose>
<c:when test="${empty msg.sender.username}">
<c:choose>
<c:when test="${msg.is_read eq Not_Read}">
一名游客在${fn:substring(msg.date,0,16)}评论了你的文章<a style="color:red" href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:when>
<c:otherwise>
一名游客在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${msg.is_read eq Not_Read}">
用户 ${msg.sender.username}在${fn:substring(msg.date,0,16)}评论了你的文章<a style="color:red" href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:when>
<c:otherwise>
用户 ${msg.sender.username}在${fn:substring(msg.date,0,16)}评论了你的文章<a href="/RiXiang_blog/msg/show.form?id=${msg.id}">${msg.article.title}</a><br>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</div>
</c:forEach>
<c:set var="Not_Read" value="<%=MsgIsRead.No%>"/>先这样写,jstl才能获取到该java对象~

jsp用jstl标签比较枚举的更多相关文章
- JSP、JSTL标签、EL表达式
JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...
- JSP的JSTL标签使用
JSTL标签和asp.net中的webform控件很像,但是功能确比asp.net的强很多. 配置过程,从最简单的项目开始: 1.下载JSTL标签库:http://archive.apache.org ...
- jsp之jstl标签
常用jstl标签 一.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...
- 【jsp】JSTL标签大全详解
一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- jsp 添加jstl标签
jsp页面中添加下列代码即可使用jstl标签. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix=" ...
- jsp中jstl标签的类似 if - else 语句 的语法
在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...
- 转载:jsp中jstl标签的类似 if - else 语句 的语法
原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...
- jsp页面,jstl标签中的数据在<%%>java中使用
可参考jsp的API隐式对象.. 这部分数据其实被保存在page域中,但jsp中如果使用java代码需要在特定的标签中<%%>,在这个标签中可使用的只有pageContext对象,所以可以 ...
- fn:indexOf()详解(jsp中JSTL标签库)
fn:indexOf()函数返回一个字符串中指定子串的位置. 语法 fn:indexOf()函数的语法如下: ${fn:indexOf(<原始字符串>,<子字符串>)} 实例演 ...
随机推荐
- Handsontable对单元格的操作
1.自动填充单元格数据 fillHandle:true/false //当值为true时,允许拖动单元格右下角,将其值自动填充到选中的单元格 2.合并单元格 mergeCells:[{row:起 ...
- 安卓查询当前所在地天气及查询地区(城市)代码cityCode localCode
源码可获取用户当前位置的天气情况 本代码最有价值的部分在于关于城市码的获取,我用了两个小时才将全国主要城市的编码整理成HashMap,下载即可用! 试一试:点击下载. ---------------- ...
- linux svn安装和配置
linux svn安装和配置,不结合apache http://blog.51yip.com/server/901.html 张映 发表于 2010-07-07 分类目录: 服务器相关 今天有个同事在 ...
- Dalvik虚拟机的运行过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8914953 在前面一篇文章中,我们分析了Dal ...
- Dalvik虚拟机的启动过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8885792 在Android系统中,应用程序进 ...
- Android开发 ADB server didn't ACK, failed to start daemon解决方案
有时候在打开ddms的时候,会看到adb会报如题的错误,解决方案是打开任务管理器,(ctrl+shift+esc),然后关掉adb.exe的进程,重启eclipse就ok了. 还有许多无良商家开发的垃 ...
- 面试总结之html+css
最近面试了一些公司,和技术总监聊了一些前端技术方面的内容.回来之后我总结了一下,大致可以分为三个模块:第一.Html与css 方面:第二.浏览器解析方面:第三.js方面.打算,分为三篇博文,根据自己的 ...
- 将集合类转换成DataTable
/// <summary> /// 将集合类转换成DataTale /// </summary> /// <param name="list"> ...
- js 之 Post发送请求
// ajax 对象 function ajaxObject() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new X ...
- Ext JS中Button的一般使用
Ext JS中Button按钮的显示,以及按钮的部分事件 一.属性 renderTo:将当前对象所生成的HTML对象存放在指定的对象中 text:得到按钮名称 minWidth:按钮最小宽度 hidd ...