【问题标题】:EL comparison with equalIgnoreCaseEL 与 equalsIgnoreCase 的比较
【发布时间】:2012-05-26 01:49:53
【问题描述】:

如何在 EL 中检查 equalIgnoreCase?

String a = "hello";
a.equalsIgnoreCase("hello");

现在在 JSP 页面上..

<h:panelGroup rendered="#{patientNotePrescriptionVar.prescriptionSchedule ==  patientNotePresBackingBean.sendPrescription}">
            ... Some code here ....
</h:panelGroup>

有什么方法可以将patientNotePresBackingBean.sendPrescription 匹配为equalIgnoreCase?

【问题讨论】:

    标签: java jsp jsf el


    【解决方案1】:

    如果您使用的是 EL 2.2(Servlet 3.0 的一部分)或 JBoss EL,那么您应该能够在 EL 中调用该方法。

    <h:panelGroup rendered="#{patientNotePrescriptionVar.prescriptionSchedule.equalsIgnoreCase(patientNotePresBackingBean.sendPrescription)}">
    

    如果您还没有使用 EL 2.2,那么最好的办法是将两个字符串都传递给 JSTL fn:toLowerCase()(或 fn:toUpperCase()),然后进行比较。

    <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    ...
    <h:panelGroup rendered="#{fn:toLowerCase(patientNotePrescriptionVar.prescriptionSchedule) == fn:toLowerCase(patientNotePresBackingBean.sendPrescription)}">
    

    不过,最好不要让它们区分大小写。如果它们代表某种常量,最好将它们设为枚举之类的。

    【讨论】:

    • 感谢 BalusC,但在这种情况下,adarshr 的回答也是如此,即使它给出了类似 The attribute prefix fn does not correspond to any imported tag library 的错误
    • 您当然需要在 JSP 顶部声明 fn taglib(就像您为 JSF h taglib 所做的一样)。检查文档以获取确切的语法:docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/…
    • 不,它以fn: 开头,而不是c:
    【解决方案2】:

    您可以将两个操作数都转换为小写,然后将它们等同起来。

    如果是 JSTL,我会这样做

    fn:toLowerCase(patientNotePrescriptionVar.prescriptionSchedule) eq fn:toLowerCase(patientNotePresBackingBean.sendPrescription)
    

    只需检查您是否可以在 JSF 中执行类似的操作。抱歉,我最近与 JSF 失去了联系。

    【讨论】:

    • 如果我没记错的话,你先回答的完全不同?否则我不会发布重复的答案。
    • 不,我只是回答了第一行,然后添加了 JSTL 示例 :) 此外,您的不是重复的。它补充了我的答案。
    • 报错...属性前缀fn不对应任何导入的标签库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2013-01-05
    相关资源
    最近更新 更多