c:wenn c:wenn nicht Arbeit

Kann ich den Zugriff auf meine variable gespeichert, in der eine backing-bean von meinem JSF2 Seite, so Dinge wie

<h:outputText value="#{myBean.myValue}"/>

Arbeit, und den Wert (der ist ein int btw.) Drucke okay.
Jedoch, wenn Sie versuchen, verwenden Sie diesen Wert in bedingten Ausdrücken in c:wenn und/oder c:wenn tags, die er nie gleich alles, was... also:

<c:if test="#{myBean.myValue == 1}">
    <c:set var="myVar" value="true"/>
</c:if>

<c:choose>
    <c:when test="#{myBean.myValue > 1}">
        <c:set var="myVar" value="true"/>
    </c:when>
</c:choose>

oder sogar

#{myBean.myValue eq '1'} 

oder

#{myBean.myValue == '1'}

nie zu true ausgewertet werden, selbst wenn der Wert ist in der Tat 1 oder >1.

Ärgerlicherweise der Vergleich funktioniert in der gerendert Attribut für ein tag! Also diese:

<h:outputText value="whatever" rendered="#{myBean.myValue == 1}"/>

ist in Ordnung!

Was ist Los?

UPDATE:

Dies funktioniert:

public int getMyValue() {
    return 1;
}

aber nicht:

@Column(name = "orderstatus")
public int getOrderStatus() {
return orderStatus;
}

Den int-Wert wird korrekt gedruckt, aber 1 == 1 ist false.

Sind entity-beans in einer besonderen Weise behandelt? Kann ich Ihnen für die Anzeige Ihren Wert auf das UI?

UPDATE2:

<h:outputText value="#{order.adcOrderStatus.orderStatus.class}"/>

Drucke java.lang.Integer.

UPDATE3:

Hier ist der vollständige code:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:cc="http://java.sun.com/jsf/composite">
    <cc:interface>
        <cc:attribute name="orderStatus" required="true"/>
    </cc:interface>
    <cc:implementation>
        <c:choose>
            <c:when test="#{cc.attrs.orderStatus == 1}" >
                <c:set var="unknownStatus" value="false"/>
            </c:when>
            <c:when test="#{cc.attrs.orderStatus == 2}" >
                <c:set var="unknownStatus" value="false"/>
            </c:when>
            <c:when test="#{cc.attrs.orderStatus == 3}" >
                <c:set var="unknownStatus" value="false"/>
            </c:when>
            <c:when test="#{cc.attrs.orderStatus == 99}" >
                <c:set var="unknownStatus" value="false"/>
            </c:when>
            <c:otherwise>
                <c:set var="unknownStatus" value="true"/>
            </c:otherwise>
        </c:choose>
        <h:graphicImage url="#{resource['img/icons/flag_yellow.png']}" rendered="#{cc.attrs.orderStatus == 1}"/>
        <h:outputText value="Created" rendered="#{cc.attrs.orderStatus == 1}"/>
        <h:graphicImage url="#{resource['img/icons/flag_orange.png']}" rendered="#{cc.attrs.orderStatus == 2}"/>
        <h:outputText value="Stopped" rendered="#{cc.attrs.orderStatus == 2}"/>
        <h:graphicImage url="#{resource['img/icons/flag_green.png']}" rendered="#{cc.attrs.orderStatus == 3}"/>
        <h:outputText value="Active" rendered="#{cc.attrs.orderStatus == 3}"/>
        <h:graphicImage url="#{resource['img/icons/flag_red.png']}" rendered="#{cc.attrs.orderStatus == 99}"/>
        <h:outputText value="Failed" rendered="#{cc.attrs.orderStatus == 99}"/>
        <h:graphicImage url="#{resource['img/icons/question_mark.png']}" rendered="#{unknownStatus}"/>
        <h:outputText value="Unknown" rendered="#{unknownStatus}"/>
    </cc:implementation>
</html>

Funktioniert es wenn man es mit einem int-Wert. Aber das funktioniert nicht:

    <p:dataTable value="#{cc.attrs.orders}" var="order">
        <p:column>
            <f:facet name="header">
                <h:outputText value="Status"/>
            </f:facet>
            <mytag:orderStatus orderStatus="#{order.adcOrderStatus.orderStatus}"/>
        </p:column>
    </p:dataTable>

Zeigt den richtigen Wert:

<h:outputText value="#{order.adcOrderStatus.orderStatus.class}"/>

InformationsquelleAutor egbokul | 2010-07-29

Schreibe einen Kommentar