请参阅此表达语言
styleClass="#{obj.validationErrorMap eq null ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Run Code Online (Sandbox Code Playgroud)
即使地图为空,highlight_row也会应用样式.
所以我改为
styleClass="#{empty obj.validationErrorMap ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Run Code Online (Sandbox Code Playgroud)
即便如此,highlight_row正在应用.
如果地图是empty OR null我不想要任何样式应用.
有帮助吗?和这种行为的原因?
是否有可能在JSF中测试枚举相等性?
例如当stuff是enum Stuff:
<h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>
Run Code Online (Sandbox Code Playgroud) 我是JSF 2的新手.我的问题是关于BalusC对这个问题的回答jsf2 ajax基于请求参数更新部件 我尝试了kickstart代码BalusC发布并且我遇到了EL解析错误:
/nameofpage.xhtml @12,64 rendered="#{bean.panels.contains('u1')}"
Error Parsing: #{bean.panels.contains('u1')}
Run Code Online (Sandbox Code Playgroud)
我想这是因为我没有运行一个支持Servlet 3.0/EL 2.2的容器,并且根据Servlet 3.0规范声明了/WEB-INF/web.xml.我正在使用Tomcat 6.
BalusC在他的回答中建议创建一个自定义EL功能.但是如何使用自定义EL功能完成此操作?或者只需配置我项目的某些部分即可解决这个问题?
以下是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud) 我正在创建所有语言的下拉列表.列表的默认语言选择将由用户添加的信息确定:
<select>
<c:forEach items="${languages}" var="lang">
<c:choose>
<c:when test="${lang}.equals(${pageLang})">
<option value="${lang}" selected>${lang}</option>
</c:when>
<c:otherwise>
<option value="${lang}">${lang}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)
.equals在EL中似乎不存在.看了一下这里建议我编写自己的函数,然后导入并使用它.因为这只是针对此页面的一个小小的事情,我不想为此开始创建库等.我也不想开始为servlet创建专家对象,并在其中返回这些额外信息.
我唯一能想到的就是从servlet返回整个选项行的实际html,而不仅仅是语言字符串,但这让我觉得很难看,所以我希望有一个更优雅的解决方案.
快速修复EL中两个字符串的最佳方案是什么?
如何使用JSTL/EL从JSP调用Java类中定义的参数的Java方法.该方法返回数组.可以使用任何返回值.
如何在JSF页面中调试EL?我想看变量值,函数调用等等.最好的解决方案是eclipse插件,但任何其他可能性都比猜测"为什么这个表达式无法正确呈现?"更好.
==并eq使用EL给出相同的结果来进行我的字符串比较测试:
<c:if test="${person.sokande_i == 'endast_usa'}">Endast USA</c:if>
<c:if test="${person.sokande_i == 'alla'}">Alla länder</c:if>
<c:if test="${person.sokande_i == 'alla_utom_usa'}">Alla utom USA</c:if>
Run Code Online (Sandbox Code Playgroud)
我应该用eq吗?是==仅整数?但它也适用于字符串.AFAIK ==测试hashCodes是否相等并且eq意味着"有意义的不同".
另一个问题是说==并eq做同样的事情.
这里没有区别吗?与我说的不同之==处在于:查看hashCode并eq查看实现equals(...).
<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) 有没有办法让包含JavaScript文件的表达式语言(EL)表达式由JSF评估?
我希望Seam可以解决这个问题,但到目前为止还没有运气.我想要的只是能够在我的JavaScript函数中使用本地化的消息,这些消息在页面之间共享.