标签: jstl

如何使用JSP替换HTML表行颜色?

如何使用JSP替换HTML表格行颜色?

我的CSS看起来像:

tr.odd {background-color: #EEDDEE}
tr.even {background-color: #EEEEDD}
Run Code Online (Sandbox Code Playgroud)

我想用来<c:forEach>迭代一个集合.

<c:forEach items="${element}" var="myCollection">
  <tr>
    <td><c:out value="${element.field}"/></td>
    ...
  </tr>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我需要一个int count变量或boolean odd/even变量来跟踪行.然后我的<tr>标签看起来像:

<tr class="odd or even depending on the row">
Run Code Online (Sandbox Code Playgroud)

html css jsp jstl

29
推荐指数
1
解决办法
5万
查看次数

在JSP/JSTL/EL中访问集合的大小

services在JSP页面中调用了一个List变量.如果列表中有多个元素,我需要在页面中添加一些标记.

我想做的是......

<c:if test="${services.size() gt 1}">
  <!-- markup... -->
</c:if>
Run Code Online (Sandbox Code Playgroud)

但是你不能在EL中调用Java对象的方法(我想这可能是364823782时间,我后悔这个事实).您只能通过删除具有getName()方法的User类的'get',例如$ {user.name}来访问Java对象上的getter.

评估此测试的正确方法是什么?

java jsp jstl el

29
推荐指数
2
解决办法
3万
查看次数

编译JSP Java(*__ jsp.java)文件在哪里?

我收到了javax.servlet.jsp.JspException我的网站试图渲染的一个jsp文件(survey.jsp).但是,堆栈跟踪没有给出jsp中失败的特定行,而是它在(survey_jsp.java:787)中失败的行号,它似乎是已编译的JSP文件.我在哪里可以找到这样的文件,以便我知道抛出此异常的行是什么?

谢谢

编辑:/work如果你正在使用tomcat,这些文件存在于目录中,如下面的评论所示.

java tomcat struts jstl java-ee

28
推荐指数
3
解决办法
6万
查看次数

如何在scriptlet中使用JSTL变量?

我必须访问在迭代器中计算的JSTL变量.
代码摘录:

<c:forEach var="resultBean" items="${resultList}" varStatus="status">
   card: ${resultBean.cardNum} 
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我想访问${resultBean.cardNum}scriptlet代码.我现在正在做的是:

<c:forEach var="resultBean" items="${resultList}" varStatus="status">
   card: ${resultBean.cardNum} 
   <c:set var="currentCardNum">${resultBean.cardNum}</c:set>
   <%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我想跳过第3行,我在pageContext中设置变量.没有设置它可以实现相同的结果吗?或者我可以使用其他方式吗?

java jsp jstl scriptlet

27
推荐指数
2
解决办法
4万
查看次数

表达式语言和Eclipse警告:"items"不支持运行时表达式

我有以下JSP:

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ page isELIgnored="false"%>
<!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=UTF-8">
        <title><c:out value="${it.title}"/></title>
    </head>
    <body>
        <c:forEach var="speaker" items="${it.speakers}" varStatus="stat">
            <ul>
                <li><c:out value="${speaker.person.firstName}" /> <c:out value="${speaker.person.lastName}" />, <c:out value="${speaker.person.address.city.zip}" /> <c:out value="${speaker.person.address.city.name}" /></li>
            </ul> 
        </c:forEach>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Eclipse在我的代码中警告我关于EL表达式的每个实例:

Warning [line 10]: "value" does not support runtime expressions
Warning [line 13]: "items" does not support runtime expressions
...
Run Code Online (Sandbox Code Playgroud)

但事实并非如此,EL会被服务器正确评估.

任何人都可以向我暗示正确的方向为什么eclipse会警告我那些EL表达式?

java eclipse jsp jstl el

27
推荐指数
1
解决办法
3万
查看次数

JSTL转义特殊字符

我有这个特殊字符的奇怪问题.在JSP中,我使用字段名称作为id,名称可以是任何类似的

id="&amp;lt;1 and &amp;&gt;2" (OR)
id="aaa &amp; bbb"
Run Code Online (Sandbox Code Playgroud)

我没有任何其他选项来使用ID而不是名称,这是我从后端得到的唯一东西.

那么,是否有任何逻辑可以使用JSTL删除所有特殊字符.在目前的场景中,在In JS中,我将使用ID进行一些操作.这导致每种浏览器出现很多问题.

请建议,提前致谢...

jsp jstl escaping special-characters

27
推荐指数
2
解决办法
9万
查看次数

如何将参数传递给jsp:include通过c:set?JSP中变量​​的范围是什么?

我在welcome.jsp上有这个

<c:set var="pgTitle" value="Welcome"/>
<jsp:include page="/jsp/inc/head.jsp" />
Run Code Online (Sandbox Code Playgroud)

这在head.jsp中:

<title>Site Name - ${pgTitle}</title>
Run Code Online (Sandbox Code Playgroud)

但变量是空白的,输出仅仅是

Site Name -
Run Code Online (Sandbox Code Playgroud)

我看过很多文章,我无法弄清问题是什么.如果我${pgTitle}在同一个welcome.jsp中的其他地方回显,那么它输出正常.

我在两个页面上都包含了核心标记库.

java jsp jstl el

27
推荐指数
1
解决办法
3万
查看次数

访问JSP中的常量(没有scriptlet)

我有一个类定义各种会话属性的名称,例如

class Constants {
    public static final String ATTR_CURRENT_USER = "current.user";
}
Run Code Online (Sandbox Code Playgroud)

我想在JSP中使用这些常量来测试这些属性的存在,例如:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.example.Constants" %>

<c:if test="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}">
    <%-- Do somthing --%>
</c:if>
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使sytax正确.另外,为了避免在多个地方重复上面相当冗长的测试,我想将结果分配给本地(页面范围)变量,并改为引用它.我相信我可以这样做<c:set>,但我再次努力找到正确的语法.

更新:继续下面的建议,我试过:

<c:set var="nullUser" scope="session"
value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" />
Run Code Online (Sandbox Code Playgroud)

这没用.所以相反,我尝试替换常量的字面值.我还将常量添加到页面的内容中,因此我可以在呈现页面时验证常量的值

<c:set var="nullUser" scope="session"
value="${sessionScope['current.user'] eq null}" />
<%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %>
Run Code Online (Sandbox Code Playgroud)

这工作正常,它在页面上打印了期望值"current.user".我无法解释为什么使用String文字工作,但是当两个看起来具有相同的值时,对常量的引用不会.救命.....

java session jsp jstl

26
推荐指数
2
解决办法
7万
查看次数

在JSP/JSTL中查看bean的所有字段/属性

我有一个豆子${product}.我想查看这个bean的所有可用字段/属性.因此,例如,${product.price},${product.name},${product.attributes.colour}等.

是否可以使用JSTL/EL在JSP中动态打印出这些属性的所有名称和值?

就像是:

<c:forEach items="${product}" var="p">  
    ${p.key} - ${p.value}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

jsp jstl properties javabeans

26
推荐指数
1
解决办法
3万
查看次数

javax.servlet.ServletException:java.lang.NoClassDefFoundError:javax/servlet/jsp/jstl/core/ConditionalTagSupport

我使用sitemesh来装饰页面.我正在使用JSP页面.页面工作正常,直到我使用<c:if>条件标签.我在WEB-INF/lib文件夹中有jstl-impl-1.2.jar和sitemesh-3.0-alpha-1.jar文件.我在jsp页面中有以下标记库声明:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
Run Code Online (Sandbox Code Playgroud)

我正在使用带有java 6的tomcat 7.0.当我在eclipse中创建新的动态Web项目时,我将动态Web模块版本设置为2.4.页面有<c:set/>标签,它们工作正常,但是当我使用if条件标签时,我收到以下错误:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:342)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:158)
org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:133)
org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39)
org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:74)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:175)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:157)

root cause

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1223)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.sitemesh.webapp.WebAppContext.dispatch(WebAppContext.java:158)
org.sitemesh.webapp.WebAppContext.decorate(WebAppContext.java:133)
org.sitemesh.BaseSiteMeshContext.decorate(BaseSiteMeshContext.java:39)
org.sitemesh.webapp.SiteMeshFilter.postProcess(SiteMeshFilter.java:74)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:175)
org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:157)

root cause

java.lang.ClassNotFoundException: …
Run Code Online (Sandbox Code Playgroud)

java jsp jstl noclassdeffounderror servletexception

25
推荐指数
1
解决办法
10万
查看次数