Javafx 使用isEqualTo将属性与字符串值进行比较时,无论字符串是什么,都会返回true

Javafx 使用isEqualTo将属性与字符串值进行比较时,无论字符串是什么,都会返回true,javafx,groovy,griffon,Javafx,Groovy,Griffon,我试图使用isEqualsTo将属性的值与字符串进行比较。无论我将属性与哪个字符串进行比较,该值始终返回true。我有一个模型有一个消息类型,这个消息类型是一个字符串,它可以是关闭的或警告的 我有以下型号: class MessageModel { @FXObservable String messageType } 这是我的看法 MessageModel model String CLOSED = 'CLOSED' String WARNING = 'W

我试图使用isEqualsTo将属性的值与字符串进行比较。无论我将属性与哪个字符串进行比较,该值始终返回true。我有一个模型有一个消息类型,这个消息类型是一个字符串,它可以是关闭的或警告的

我有以下型号:

class MessageModel {
    @FXObservable String messageType
}
这是我的看法

MessageModel model

      String CLOSED = 'CLOSED'
        String WARNING = 'WARNING'

    if (model.messageTypeProperty().isEqualTo(CLOSED)) {
                image.setImage(new Image("/com/pppp/ddd/img/messageLock.png"))
            } else if (model.messageTypeProperty().isEqualTo(WARNING)) {
                image.setImage(new Image("/com/pppp/ddd/img/messageWarning.png"))
            }
这不起作用,它总是在第一个IF时返回true


任何帮助都将不胜感激

我不熟悉Groovy,所以这可能不是问题,但假设使用该方法,则返回一个
BooleanBinding
。这意味着您有
if()
;这是故意的吗?我不完全确定这样做是否正确,我对Javafx相当陌生。我真正想做的是将我在模型中的值(一个字符串)与字符串值“CLOSED”或“WARNING”进行比较。您可以尝试
messageTypeProperty().get().equals(CLOSED)
。在java中,您可以使用
model.getMessageType().equals(CLOSED)
。@Slaw感谢您为我指明了正确的方向,我在错误的地方使用了它,现在它符合你说的。如果你想要的话,你可以把它作为答案贴出来,我就要了!我不熟悉Groovy,所以这可能不是问题,但假设使用该方法,则返回一个
BooleanBinding
。这意味着您有
if()
;这是故意的吗?我不完全确定这样做是否正确,我对Javafx相当陌生。我真正想做的是将我在模型中的值(一个字符串)与字符串值“CLOSED”或“WARNING”进行比较。您可以尝试
messageTypeProperty().get().equals(CLOSED)
。在java中,您可以使用
model.getMessageType().equals(CLOSED)
。@Slaw感谢您为我指明了正确的方向,我在错误的地方使用了它,现在它符合你说的。如果你想要的话,你可以把它作为答案贴出来,我就要了!