7

B列のセル値を計算する方法とcssスタイルを動的に変更する方法 列Bの値を計算する方法と彼の色を変更する方法

私のJavaオブジェクト:

public class MyObject{
   private Date date;
   private int A;
   private int C;

   //Getters & Setters
}

私のマネージドBean:

public class MyBean(){
    List<MyObject> List = myObjectDao.FindAll();

    //Getters & Setters
}

私のjsfコード:

<p:dataTable id="idList" var="list" value="#{myBean.list}" >
    <p:column headerText="DATE">
        <h:outputText value="#{list.date}"  />
    </p:column>
        <p:column headerText="A">
        <h:outputText value="#{list.A}"  />
    </p:column>
        <p:column headerText="B">
        <h:outputText value="????????" style="???????"  //>
    </p:column>
        <p:column headerText="C">
        <h:outputText value="#{list.C} />
    </p:column>
</p:dataTable> 
4

3 に答える 3

13

?:ELでは条件演算子を使用できます。

例えば

<c:set var="B" value="#{(list.A / list.C) * 100}" />
<h:outputText value="#{B}" style="display: block; background-color: #{B lt 50 ? 'red' : (B lt 90 ? 'blue' : 'green')}" />

Bがモデルまたはコントローラーの他の場所でも使用されている場合は、public int getB()を含むだけのメソッドを追加して、の代わりにreturn (A/C) * 100;使用できます。#{list.B}#{B}

適切な設計では、代わりにCSSクラスを使用することに注意してください。例えば

<h:outputText value="#{B}" styleClass="percentage #{B lt 50 ? 'poor' : (B lt 90 ? 'average' : 'good')}" />

td .percentage {
    display: block;
}

.percentage.poor {
    background-color: red;
}

.percentage.average {
    background-color: blue;
}

.percentage.good {
    background-color: green;
}

もちろん、他の回答で示唆されているように、getterメソッドでCSSスタイル/クラスの決定を実行することもできますが、それは関心の分離が不十分です。

于 2012-10-22T15:58:11.587 に答える
1

MyObjectクラス内でロジックを実行することをお勧めします

だから私はそれを次のように呼びますJSF

<p:column headerText="B">
    <h:outputText value="#{list.calculateB()}" styleClass="list.createLabel()">
</p:column>

中身MyObject

public double calculateB() {
   return (A/C)*100;
}


public String createLabel() {
   if(calculateB() > 90) {
       return "GREEN";
   //DO YOUR LOGIC

}

CSS

.GREEN {
background-color: #00FF00 !important;

}
于 2012-10-22T15:51:07.563 に答える
-1

以下のコードは私の問題を解決しました。

style="#{event.eventStatusDesc eq 'Completed' ? 'color: #32cd32;font-weight: bold;':(event.eventStatusDesc eq 'Rescheduled till Further Notice' ? 'color: blue;font-weight: bold;' : 'color: black;')}" />
于 2016-11-28T09:41:28.120 に答える