Java如何在Spring EL中使用三元运算符?

在此示例中,您将学习如何在Spring Expression Language中使用三元运算符。如果条件为三元运算符,则将Spring EL评估为一个值,如果条件为true,则评估为另一个值false。三元运算符是使用?:符号编写的,就像您在Java中所做的一样。测试条件放在?符号的左侧,而评估表达式放在:符号之间。

作为示例,让我们看看如何在spring配置文件中使用三元运算符。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="book1">
        <property name="type" value="Novel"/>
    </bean>
    <bean id="book2">
        <property name="type" value="#{book1.type != null ? book1.type : 'Novel'}"/>
    </bean>
    <bean id="book3">
        <property name="type" value="#{book1.type ?: 'Novel'}"/>
    </bean>

</beans>

在配置中,您将看到有两种方法可以使用操作符。在book2bean上,我们使用操作符的常用用法。我们检查book1.type是否不等于null,如果这是true,那么我们将book1.type作为值,否则我们只将类型赋给'Novel'。

第一个示例中有一些重复项。如您所见,我们在该行代码中两次调用boo1.type。实际上,Spring EL版本可以为您提供较短的版本。您可以像在book3Bean中一样使用三元运算符,而不是像之前那样做。这样我们就可以输入了book1.type ?: 'Novel'。这将给我们相同的结果。

创建配置后,您还将需要Book该类。所以这是Book类的定义。

package org.nhooo.example.spring.el;

public class Book {
    private String type;

    public Book() {
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

最后,让我们创建一个类来运行spring配置。此类基本上只是加载spring配置文件spel-ternary.xml并获取一些bean,这些Bookbean来自应用程序上下文并打印出其type属性的值。

package org.nhooo.example.spring.el;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpELTernaryOperatorExample {
    public static void main(String[] args) {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("spel-ternary.xml");

        Book book1 = (Book) context.getBean("book1");
        Book book2 = (Book) context.getBean("book2");
        Book book3 = (Book) context.getBean("book3");

        System.out.println("book1.getType() = " + book1.getType());
        System.out.println("book2.getType() = " + book2.getType());
        System.out.println("book3.getType() = " + book3.getType());

    }
}

这是您将获得的执行输出。

book1.getType() = Novel
book2.getType() = Novel
book3.getType() = Novel