jsf-2 - 如何使用if,else条件在jsf中显示图像

标签 jsf-2 jstl

我有一个条件,我有一个登记表,如果userid为0,它将显示虚拟图像,并且当我从任何更新中编辑用户时,我检查userid是否不等于0,然后显示与userid对应的图像。

我在jsf页面中使用了JSTL。但始终会尝试转到else循环以显示图像。该功能运行正常。唯一的问题是,当我第一次访问页面时,我无法显示虚拟图像。这是我的代码:

<c:if test="${'#{user.userId}' == '0'}">
  <a href="Images/thumb_02.jpg" target="_blank" ></a>
  <img src="Images/thumb_02.jpg" />
</c:if>
<c:otherwise>
  <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"</a>
  <img src="/DisplayBlobExample?userId=#{user.userId}" />
</c:otherwise>

我可以使用此JSTL标签还是可以使用jsf?

最佳答案

嵌套EL表达式是非法的:您应该内联它们。在您的情况下,使用JSTL是完全有效的。更正错误后,您将使代码正常工作:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core">
    <c:if test="#{not empty user or user.userId eq 0}">
        <a href="Images/thumb_02.jpg" target="_blank" ></a>
        <img src="Images/thumb_02.jpg" />
    </c:if>
    <c:if test="#{empty user or user.userId eq 0}">
        <a href="/DisplayBlobExample?userId=#{user.userId}" target="_blank"></a>
        <img src="/DisplayBlobExample?userId=#{user.userId}" />
    </c:if>
</html>

另一种解决方案是在一个元素的EL中指定所需的所有条件。尽管它可能更重且可读性更差,但它是:
<a href="#{not empty user or user.userId eq 0 ? '/Images/thumb_02.jpg' : '/DisplayBlobExample?userId='}#{not empty user or user.userId eq 0 ? '' : user.userId}" target="_blank"></a>
<img src="#{not empty user or user.userId eq 0 ? '/Images/thumb_02.jpg' : '/DisplayBlobExample?userId='}#{not empty user or user.userId eq 0 ? '' : user.userId}" target="_blank"></img>

关于jsf-2 - 如何使用if,else条件在jsf中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587304/

相关文章:

java - 向重定向页面发送 flash 消息

java - 如何使用 p :tabMenu with Ajax

jsf - Primefaces 文件 uploader 不调用处理程序方法

hibernate - 无法在运行 mysql 的情况下获取 JPA

java - JSTL forEach 遍历实现 Iterable 的用户定义类

java - JSTL <c :forEach> not supports List<Integer>?

java - 使用 JSTL/EL/JAVA 检索 TreeMap 的第一个元素

jsf-2 - 处理 ViewExireException/ajax 并显示 Primefaces 对话框

jsp - 用于国际化和本地化的 JSTL 资源包

mysql - 将 JSTL SQL 结果转发给 Servlet