在JSF中,可以使用EL空运算符渲染或不渲染组件
rendered="#{not empty myBean.myList}"
Run Code Online (Sandbox Code Playgroud)
正如我所理解的那样,运算符既可以作为空值检查,也可以检查列表是否为空.
我想对我自己的自定义类的某些对象进行空检查,我需要实现哪些接口或部分接口?哪个接口是空的运算符兼容?
我有一些扩展超类的类,在JSP中我想展示这些类的一些属性.我只想制作一个JSP,但我事先并不知道该对象是否具有属性.所以我需要一个JSTL表达式或一个标签来检查我传递的对象是否具有此属性(类似于javascript中的运算符,但在服务器中).
<c:if test="${an expression which checks if myAttribute exists in myObject}">
<!-- Display this only when myObject has the atttribute "myAttribute" -->
<!-- Now I can access safely to "myAttribute" -->
${myObject.myAttribute}
</C:if>
Run Code Online (Sandbox Code Playgroud)
我怎么能得到这个?
谢谢.
<c:if test="${param.username}" >
</c:if>
Run Code Online (Sandbox Code Playgroud)
如何检查param.username是否存在?
我正在尝试在JSTL中测试会话属性是否为空.但是该属性为空JSTL将其视为非空属性.
这是我试图用JSTL替换的硬编码.此代码工作正常:
<% if (request.getAttribute("error") != null) { %>
<div class="alert alert-danger">
<strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong>
<%= request.getAttribute("error")%>
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这就是我用JSTL取代它的方法.选中时,error-attribute不为空,但为空.
<c:if test="${not empty sessionScope.error}">
<div class="alert alert-danger">
<strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong>
<c:out value="${sessionScope.error}" />
</div>
</c:if>
Run Code Online (Sandbox Code Playgroud) 可能重复:
评估空或空JSTL c标记
我正在为JSTL和EL重构scriptlet,我想知道如何在JSTL/EL中编写以下内容:
if(sokandeList != null && sokandeList.size() > 0) { %>
...
Run Code Online (Sandbox Code Playgroud)
我不知道如何测试null,AFAIK EL只能在这个上下文中访问getter所以我必须在sokandeList类中添加一个方法getSize().正确?JSTL/EL表达式应该是什么样的?谢谢你的帮助
你能告诉我这段代码有什么问题吗?我正在使用Spring MVC发送数据.scriplet正在工作但是jstl会抛出一些错误,尽管scriplet和jstl执行相同的操作.
<%@page import="java.util.ArrayList"%>
<%@page import="biz.canisrigel.scg.common.RssParser.Item"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Twitter</title>
</head>
<body>
<%
ArrayList<Item> feeds = (ArrayList<Item>) request
.getAttribute("feeds");
for (Item tfeed : feeds) {
out.println(tfeed.description);
}
%>
<c:forEach var="tfeed" items="${feeds}">
<c:out value="${tfeed.description}" />
</c:forEach>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你能指出我哪里错了吗?抛出的错误是javax.servlet.ServletException:javax.servlet.jsp.JspException:使用值"$ {tfeed.description}"评估自定义操作属性"value"时发生错误:无法在对象中找到"description"的值类"biz.canisrigel.scg.common.RssParser $ Item"使用运算符"." (空值)
添加c:如果按照Ravi的建议.以下是错误:
使用值"$ {not empty tfeed.description}"评估自定义操作属性"test"时发生错误:无法在类"biz.canisrigel.scg.common.RssParser $ Item"的对象中找到"description"的值使用运算符"." (空值)