EL(表达式语言)支持在JSP和Facelets页面中动态解析Java对象和方法。 EL表达式采用$ {foo}和#{bar}的形式。
我升级了 Java EE Web 应用程序以使用较新的 PrimeFaces 版本,突然在 PrimeFaces commandlink 的操作属性中调用重载 bean 方法不再起作用。我尝试...
如何将 Struts <s:property /> 标签的值注入到另一个标签中
我想通过使用Struts2属性标签获取action类中的属性值并将其赋予另一个标签,就像这样(错误的代码,只是为了给出...
我有一个 *.jsp 文件。 表单元格中的下拉列表取决于表列的名称...</desc> <question vote="1"> <p>我有一个 *.jsp 文件。</p> <pre><code><!DOCTYPE html> <html lang="en"> <html> <head> <title> Drop Down List in Table Cell Depending on Name of Table Column </title> </head> <body> <table id="Sample Table" border="1"> <tr> <c:forEach var="element" items="${requestScope.tableColumnNames}"> <th>${element}</th> </c:forEach> </tr> <c:forEach var="elements" items="${requestScope.tableRowValues}"> <tr> <c:forEach var="element" items="${elements}"> <td>${element}</td> </c:forEach> </tr> </c:forEach> </table> </body> </html> </code></pre> <p>参数tableColumnNames是一个数组: String[] tableColumnNames = new String[]{"表列一","表列二"};</p> <p>参数tableRowValues是一个数组: String[][] tableRowValues = new String[][]{{"样本值", "是/否"}};</p> <p>我只想将第二列的列名称为“表列二”的数据显示在下拉列表中。</p> <p>我的假设是从每个单元格获取对列的引用,然后使用 if 条件:</p> <pre><code><c:forEach var="element" items="${elements}"> <td>${element} <c:if <reference from cell to column (name)>="Table Column Two"> <select> <option value="optionYes"> Yes </option> <option value="OptionNo"> No </option> </select> </c:if> </td> </c:forEach> </code></pre> <p>我不确定这个方法是否正确。 请指教。非常感谢您的帮助。</p> </question> <answer tick="false" vote="0"> <p>睡一晚思考一下,然后奇迹就会发生。</p> <p>我找到了以下解决方案:</p> <pre><code><c:forEach var="element" items="${elements}" varStatus="loop"> <td> <c:choose> <c:when test="${requestScope.tableColumnNames[loop.index] == 'Table Column Two'}"> <select> <option value="optionYes"> Yes </option> <option value="OptionNo"> No </option> <option value="" selected disabled hidden> ${element} </option> </select> </c:when> <c:otherwise> ${element} </c:otherwise> </c:choose> </td> </c:forEach> </code></pre> <p>根据需要,在名称为“表列二”的列中,数据显示在下拉列表中。</p> </answer> </body></html>
我正在使用 Eclipse,在调试 JSP 页面时遇到以下问题。 所以在 JSP 页面中我有这样的内容: 我正在使用 Eclipse,在调试 JSP 页面时遇到以下问题。 所以在 JSP 页面中我有这样的东西: <c:forEach items="${listaScuoleDS}" var="scuola" varStatus="item"> ................................................ ................................................ DO SOMETHING ................................................ ................................................ </c:forEach> 因此,正如您在 forEach 循环中看到的那样,我正在使用 表达式语言 来标识要迭代的集合: items="${listaScuoleDS}" 现在,在调试模式下启动应用程序并在前面的 语句上放置一个断点,应用程序正确地停止在这一行,但我无法分析 "${listaScuoleDS}" 变量的内容。 我尝试将 "${listaScuoleDS}" 放入 Ecipse expression 调试选项卡,但我没有获得任何值。 如何在调试模式下看到之前的EL变量的内容? 不幸的是,您无法调试绑定到 JSP 文件内标签库的标签。 有一个名为 pageContext 的隐式对象。您应该能够通过调试器访问此变量。我注意到这个方法可能在 IntelliJ 中不起作用,但在 Eclipse 中却有效。 在Eclipse中: 打开调试视角并在表达式窗口中写入“pageContext”。 这里有一些参考: 页面上下文参考 pageContext 示例
我有一个这样的请求网址 http://www.example.com/?q[]=a&q[]=b&q[]=c 在EL中 ${param['q[]']} 只给出数组的第一个值,在本例中为“a”。如何获得...
如何将 promoPrice 变量打印为字符串的一部分,仅需 4.67 美元? ${(促销价格!= null)? “只需 $${promoPrice}”:“免费”} 如何获取 promoPrice 变量作为字符串 ONLY $4.67 的一部分进行打印? <c:set var="promoPrice" value="4.67" /> <p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p> 如果您已经使用 EL 3.0(Java EE 7;WildFly、Tomcat 8+、GlassFish 4+、Payara、WAS 9+ 等),那么您可以使用新的 += 运算符: <p>${not empty promoPrice ? 'ONLY $' += promoPrice : 'FREE'}</p> 如果您尚未使用 EL 3.0,则可以使用 EL 2.2(Java EE 6;JBoss AS 6/7、Tomcat 7、GlassFish 3、WAS 8 等)通过参数调用直接方法的功能,然后应用该功能于String#concat(): <p>${not empty promoPrice ? 'ONLY $'.concat(promoPrice) : 'FREE'}</p> 或者,如果您甚至还没有使用 EL 2.2(Java EE 5 或更早版本;JBoss AS 5- Tomcat 6-、WAS 7- 等),则使用 JSTL <c:set> 使用连接的值创建一个新的 EL 变量只是内联值: <c:set var="promoPriceString" value="ONLY $${promoPrice}" /> <p>${not empty promoPrice ? promoPriceString : 'FREE'}</p> 在您的特定情况,另一种方法是将表达式分成两部分: <p>${not empty promoPrice ? 'ONLY $' : 'FREE'}${promoPrice}</p> 如果 ${promoPrice} 为 null 或空,则无论如何都不会打印。 直接jstl方式 <c:set var="promoPrice" value="4.67" /> <p> <c:choose> <c:when test="${(promoPrice != null)}"> ONLY $${promoPrice} </c:when> <c:otherwise> FREE <c:otherwise> </c:choose> </p> 与 EL 2.0+ 兼容的字符串连接的一个简单而强大的解决方案是使用中间变量: <c:set var="promoPrice" value="4.67" /> <c:set var="priceText" value="ONLY ${promoPrice}" /> <p>${(promoPrice != null) ? priceText : "FREE"}</p> 根据 @BalusC,从 EL 2.2 开始,您可以使用 String#concat() 方法进行串联,从 EL 3.0 开始,您可以使用新的 += 运算符来实现此目的。 我做了类似的事情,我有一个变量mathjaxUrl,我想联系它其他字符串 <c:set var="mathjaxUrl" value="https://cdnjs.cloudflare.com/ajax/libs/mathjax" /> ... some other stuff here <c:set var="mathjaxUrl" value="${mathjaxUrl}?config=TeX-AMS-MML_HTMLorMML" /> 希望这对你有帮助 这行不通? <c:set var="promoPrice" value="4.67" /> <p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p> 请注意,${promoPrice} 位于引号之外。这看起来是最简单的解决方案。
${} 模板文字 (ES2015) 与 JSP 表达式语言语法冲突
${},所以发生的情况是 JS 模板文本中的 ${} 在编译到 servlet 之前被解释并删除。 有什么办法可以打电话给我吗
如何评估Tomcat servlet中的EL表达式? Tomcat 使用 jasper el。 https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper-el https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/
如何查看服务器使用的 EL 版本是什么? 我正在运行 Websphere 7 。 EL 类位于 j2ee.jar 中,清单如下。 清单版本:1.0 Ant 版本:Apache Ant 1.6.5 创建者:2....
如何使用 EL 计算 Bean Validation 约束消息中数组的长度?
我有一个限制,我想使用 EL 来根据情况调整消息。根据数组的长度,我想显示不同的消息。然而,我很难得到...
如何使用 EL 计算 (JSR 380) 约束消息中数组的长度?
我有一个限制,我想使用 EL 来根据情况调整消息。根据数组的长度,我想显示不同的消息。然而,我很难得到...
这就是我的菜单在 ATM 上的工作方式(在 JSF 2.2 和 PrimeFaces 13.0.5 上) 这就是我的菜单在 ATM 上的工作方式(在 JSF 2.2 和 PrimeFaces 13.0.5 上) <p:menuitem value="My menu item" outcome="/some-view-id" styleClass="#{currentView.isView('some-view-id') ? 'selected':''}" /> 注意我“手动”传递 viewId 来确定 styleClass。 我想制作“通用”方法,例如 <p:menuitem value="My menu item" outcome="/some-view-id" styleClass="#{currentView.isView(component.outcome) ? 'selected':''}" /> 但这不起作用! #{component} 指的是 <p:menu> 而不是 <p:menuItem> . 使用绑定是有效的,但我什么也没实现,因为我必须为每个菜单项声明它。 <p:menuitem value="My menu item" outcome="/some-view-id" binding="#{myMenuItemBinding}" styleClass="#{currentView.isView(myMenuItemBinding.outcome) ? 'selected':''}" /> 有什么想法吗?我原以为#{component}会是<p:menuItem> ... 此问题已在 GitHub 上报告并在 13.0.6 中修复。 问题:https://github.com/primefaces/primefaces/issues/11358 公关:https://github.com/primefaces/primefaces/pull/11361
目前,我想显示列表项中的所有值,但我想删除重复值并仅向用户显示唯一值。 我尝试按照下面的代码实现,但它不起作用。 <...
如何使用 JSTL 的 c 标签验证字符串是否为 null 或为空? 我有一个名为 var1 的变量,我可以显示它,但我想添加一个比较器来验证它。 如何使用 String 的 c 标签验证 JSTL 是否为空或为空? 我有一个名为 var1 的变量,我可以显示它,但我想添加一个比较器来验证它。 <c:out value="${var1}" /> 我想验证它何时为空或为空(我的值是字符串类型)。 如何使用 JSTL 的 c 标签验证字符串是否为 null 或为空? 您可以在 empty 中使用 <c:if> 关键字来实现此目的: <c:if test="${empty var1}"> var1 is empty or null. </c:if> <c:if test="${not empty var1}"> var1 is NOT empty or null. </c:if> 或者<c:choose>: <c:choose> <c:when test="${empty var1}"> var1 is empty or null. </c:when> <c:otherwise> var1 is NOT empty or null. </c:otherwise> </c:choose> 或者,如果您不需要有条件地渲染一堆标签,因此只能在标签属性内检查它,那么您可以使用 EL 条件运算符 ${condition? valueIfTrue : valueIfFalse}: <c:out value="${empty var1 ? 'var1 is empty or null' : 'var1 is NOT empty or null'}" /> 要了解有关这些 ${} 的更多信息(表达式语言,它是与 JSTL 不同的主题),请查看此处。 另请参阅: JSF 中的 EL 空运算符如何工作? 还要检查空白字符串,我建议遵循以下 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:if test="${empty fn:trim(var1)}"> </c:if> 它还处理空值 如果您仅检查 null 或空,那么您可以使用 with default 选项: <c:out default="var1 is empty or null." value="${var1}"/> 此代码是正确的,但如果您输入了大量空格 (' ') 而不是 null 或空字符串 返回错误。 要纠正此问题,请使用正则表达式(下面的代码检查变量是否为 null 或空或空白,与 org.apache.commons.lang.StringUtils.isNotBlank 相同): <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <c:if test="${not empty description}"> <c:set var="description" value="${fn:replace(description, ' ', '')}" /> <c:if test="${not empty description}"> The description is not blank. </c:if> </c:if> 这是一个衬里。 EL 中的三元运算符 ${empty value?'value is empty or null':'value is NOT empty or null'} 你可以使用 ${var == null} 或者。 下面是如何验证从 Java 控制器传递到 JSP 文件的 int 和 String 的示例。 MainController.java: @RequestMapping(value="/ImportJavaToJSP") public ModelAndView getImportJavaToJSP() { ModelAndView model2= new ModelAndView("importJavaToJSPExamples"); int someNumberValue=6; String someStringValue="abcdefg"; //model2.addObject("someNumber", someNumberValue); model2.addObject("someString", someStringValue); return model2; } 导入JavaToJSPExamples.jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <p>${someNumber}</p> <c:if test="${not empty someNumber}"> <p>someNumber is Not Empty</p> </c:if> <c:if test="${empty someNumber}"> <p>someNumber is Empty</p> </c:if> <p>${someString}</p> <c:if test="${not empty someString}"> <p>someString is Not Empty</p> </c:if> <c:if test="${empty someString}"> <p>someString is Empty</p> </c:if> In this step I have Set the variable first: <c:set var="structureId" value="<%=article.getStructureId()%>" scope="request"></c:set> In this step I have checked the variable empty or not: <c:if test="${not empty structureId }"> <a href="javascript:void(0);">Change Design</a> </c:if>
我正在尝试从数据库获取数据并将其显示在网页上。 我期望包含实体数据的表,但是有这个: 我接下来有一些课程: 部门: 包实体; 导入 javax.persistence.*;
在一些 XML 文件中我看到类似这样的内容 这意味着 ${sys:com.foo.bar} 将被替换为 System.getProperty("com.foo.bar"...
在一些 XML 文件中我看到类似这样的内容 这意味着 ${sys:com.foo.bar} 将被替换为 System.getProperty("com.foo.bar"...
我之前已经能够在 Thymeleaf 的表达式语言中执行数组文字(使用...OGNL?...我认为...)。现在我正在使用 Spring/JSP。 JSP 或 Spring 表达式语言是否支持 Array Lite...
我对这个关于 JSF EL 中静态方法调用的问题的答案感到困惑。 我在 @Named bean 中有一个带有公共静态方法的类: @命名 公共类静态方法{ 私人...
使用 EL 访问 JavaBean 对象并将参数传递给 JSP
很抱歉这个棘手的问题,所以我试图将我们的遗留代码转换为 JSTL 以避免我们的应用程序中出现 XSS。我只是想知道是否有一种方法可以使用