不为空时渲染 link

Render link when not null

由于我将在页面上显示 table,因此某些元素没有价值。但是有一个值的元素组成一个link到另一个页面。现在它什么都没有显示,也没有价值。

我是 Java 的新手,不明白我在代码中写错了什么。

这是我的代码:

<h:link outcome="schoolclass-detail" value="#{la.participant.schoolclass.classname}" rendered="{!la.participant.schoolclass.classname==null}">
                        <f:param name="schoolclassId" value="#{la.participant.schoolclass.id}" />
                </h:link>

提前感谢大家的帮助!

假设你使用 JSF,'la' 是你的支持 bean,如果 'classname' 的变量不为空,你想渲染你的 link,我建议使用EL 表达式而不是原始 java 表达式。

您可以阅读有关 EL 的更多信息here

你的例子的表达方式

rendered="{!la.participant.schoolclass.classname==null}"

在 EL 中看起来像

rendered="#{not (la.participant.schoolclass.classname eq null)}"

rendered="#{la.participant.schoolclass.classname ne null}"

或者更好

rendered="#{not (empty la.participant.schoolclass.classname)}"

not显然反转了下面的表达式

eq 代表等于,因此等于 java object1.equals(object2);,或者在基本类型的情况下,如 boolean obj1 == obj2;

ne代表不等于。您可能会猜到它的作用...

empty 评估以下表达式处于已定义的空覆盖物状态,例如 null、空字符串 ("") 或没有内容的数组或列表

同样重要的是语句前面的 #,您似乎在示例中忘记了。如果您忘记了这一点,您的 rendered 属性的值将被视为一个字符串,而不是应该由 JSF 计算的某些表达式。我认为这是你的例子不起作用的主要原因,因为你的表达基本上是正确的

此致

J.Adam