如何使用JSTL/EL从JSP调用Java类中定义的参数的Java方法.该方法返回数组.可以使用任何返回值.
我把它包含在我的JSP页面的最顶层:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)
我已将JSTL JAR文件放在WEB-INF/lib
目录中.但是,JSP仍然无法解析taglib.我得到以下错误:
找不到" http://java.sun.com/jsp/jstl/core " 的标记库描述符
我正在使用Eclipse Juno,项目结构如下所示:
我在jsp页面中看到以下错误 -
javax.servlet.jsp.PageContext cannot be resolved to a type
javax.servlet.jsp.JspException cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)
我看过一篇关于此的帖子,并尝试了一些建议的事情.BalusC提供了很好的输入 - JSTL1.2和Standard.jar不能一起使用.我做了这个,它解决了一段时间的问题 - 但它再次出现.我不确定我是否还有罐头碰撞.我已经将所有jar定义为Maven中的依赖项.以下是我指定pom.xml的依赖项 -
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.38</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId> …
Run Code Online (Sandbox Code Playgroud) 我有一个文本使用百里香叶呈现三种不同的颜色.
所以我到目前为止测试该值的代码是:
th:if="${evaluation} > 50"
th:if="${evaluation} < 30"
Run Code Online (Sandbox Code Playgroud)
这很有效.
但第三个测试是针对这两者之间的值.所以我尝试过:
th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"
Run Code Online (Sandbox Code Playgroud)
但是它不起作用,我在解析时遇到了这个错误:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "(${evaluation} < 49) ∧ (${evaluation} > 29)" (/property.html:41)
Run Code Online (Sandbox Code Playgroud)
当然,这些行在标签之间,因为前两个正常工作.
也许操作数和操作数不正确,但百里香叶的文档并没有真正明确这些操作数.
欢迎所有想法!
更新:我从百万富翁论坛得到了答案.做到这一点的方法是:
th:if="${evaluation < 49 and evaluation > 29}"
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的以下标记可用于将值设置为请求范围中的变量.
<c:set var="value" scope="request" value="someValue"/>
Run Code Online (Sandbox Code Playgroud)
我想要有条件地检查,如果value
设置的变量是否为空,并显示相应的结果,如下所示,使用<c:when>...</c:when>
.
<c:choose>
<c:when test="${not empty value}">
<c:out default="None" value="${value}"/>
</c:when>
<c:otherwise>
<c:out default="None" value="None"/>
</c:otherwise>
</c:choose>
Run Code Online (Sandbox Code Playgroud)
我想使用三元表达式来减少代码行,比如
<c:out default="None" value="${not empty value ? value : 'None'}"/>
Run Code Online (Sandbox Code Playgroud)
它被评估,因为它实际上意味着,但如果我交换表达式的顺序,如,
<c:out default="None" value="${empty value ? 'None' : value}"/>
Run Code Online (Sandbox Code Playgroud)
然后是语法错误指示,
"$ {空值?'无':值}"包含无效表达式:javax.el.ELException:错误解析:$ {空值?'无':值}
那么为什么会这样呢?
我正在使用该JSTL 1.1
库,包含以下taglib,
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Run Code Online (Sandbox Code Playgroud) 我希望有人在这个问题中解释一下BlausC的惊人答案.
他说小脚本有一些缺点,它们是:
可重用性:您无法重用scriptlet.我的问题:我怎样才能重用JSTL代码?
可替换性:您不能使scriptlet抽象化.抽象是什么意思,JST如何变得抽象?
OO:你不能利用继承/组合.我如何在JSTL中使用OO范例?
调试:如果一个scriptlet中途抛出异常,你得到的只是一个空白页面.
可测试性:scriptlet不能进行单元测试.这是什么意思,JSTL如何进行单元测试?
可维护性:每个saldo,需要更多的时间来维护混杂/混乱/重复的代码逻辑.这是什么意思?
最后一件事是他引用甲骨文的建议:
JSP scriptlet不应该用于编写业务逻辑.
在MVC模式中,我仅在表示层中使用scriptlet.他在这里是什么意思?
我有这样的地图,
Map<Integer,ArrayList<Object>> myMap = new LinkedHashMap<Integer,ArrayList<Object>>();
Run Code Online (Sandbox Code Playgroud)
现在我必须迭代这个Map,然后迭代地图中的ArrayList.我怎么能用JSTL做到这一点?
如何在java脚本中设置JSTL变量值?
<script>
function function1()
{
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
}
</script>
Run Code Online (Sandbox Code Playgroud)
如何从' val1 '(Java脚本)设置' user '变量(JSTL)值?