JSF <c: if> с другим типом объекта - PullRequest
3 голосов
/ 08 июня 2009

Я пытаюсь сравнить два разных объекта в JSF. Строка и целое число, конечно, это не работает ...

// myVar ==> Целое число объект
// myVar2 ==> Строка

<c:if test="${myVar == myVar2}">
    YES!!!!!!!!
</c:if>

Я пытаюсь использовать myVar.toString, но это неправильно. Так как это сделать?

Спасибо в

Ответы [ 2 ]

4 голосов
/ 09 июня 2009

Я пытаюсь сравнить два разных объекта в JSF. Строка и целое число, конечно, это не работает ...

Это не звучит правильно - я бы проверил значения. Для бобов:

public class CoercedBean {

  public int getValueAsInt() {
    return 123;
  }

  public String getValueAsString() {
    return "123";
  }

}

... эти примеры выражений оцениваются как true :

${coercedBean.valueAsInt == coercedBean.valueAsString}
<h:outputText style="color: blue"
    value="#{coercedBean.valueAsInt eq coercedBean.valueAsString}" />

В спецификации JSP 2.1 (EL) говорится об оценке равенства:

A {==,!=,eq,ne} B

Если А или В - это Байт, Короткий, Символ, Целое число или длинное приведение как A, так и B Длинный, применить оператор

2 голосов
/ 08 июня 2009

Попробуйте использовать теги JSTL fmt:

<fmt:parseNumber type="number" var="myVar2AsNumber" value=${myVar2} />


<c:if test="${myVar == myVar2AsNumber}">
        YES!!!!!!!!
</c:if>

(или, наоборот, вы можете использовать fmt: formatNumber для форматирования Integer как строки и сравнения с другой строкой).

...