Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态更改<;中单元格的CSS样式;h:数据表>;柱_Css_Jsf_Primefaces - Fatal编程技术网

动态更改<;中单元格的CSS样式;h:数据表>;柱

动态更改<;中单元格的CSS样式;h:数据表>;柱,css,jsf,primefaces,Css,Jsf,Primefaces,如何计算B列的单元格值以及如何动态更改其css样式 我的java对象: public class MyObject{ private Date date; private int A; private int C; //Getters & Setters } 我的托管bean: public class MyBean(){ List<MyObject> List = myObjectDao.FindAll(); //Getter

如何计算B列的单元格值以及如何动态更改其css样式

我的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
}
公共类MyBean(){
List=myObjectDao.FindAll();
//接球手和接球手
}
我的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> 


我建议您在
MyObject
类中执行逻辑

因此,我会在
JSF
中这样调用它:

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

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

}

只需在EL中使用条件运算符
?:

例如


如果模型或控制器中的其他地方也使用了
B
,则可以添加一个
public int getB()
方法,该方法只包含
return(a/C)*100
然后使用
{list.B}
而不是
{B}

请注意,正确的设计是使用CSS类。例如


td.百分比{
显示:块;
}
.百分比{
背景色:红色;
}
.百分比{
背景颜色:蓝色;
}
.好的{
背景颜色:绿色;
}

当然,您也可以按照另一个答案的建议,在getter方法中执行CSS样式/类的确定,但这是一个很差的关注点分离。

下面的代码解决了我的问题

style="#{event.eventStatusDesc eq 'Completed' ? 'color: #32cd32;font-weight: bold;':(event.eventStatusDesc eq 'Rescheduled till Further Notice' ? 'color: blue;font-weight: bold;' : 'color: black;')}" />

谢谢你的回答。但是的结果总是=0???很抱歉,请删除
scope=“request”
。但是我有一个警告“无法进行小于运算的数值转换”,这是由#{B lt 50?红色“:(B lt 90?蓝色“:“绿色”)引起的“一般IDE中的EL语法验证较差。我已经在Eclipse中关闭了它。如果它是无效的,它肯定会在运行时抛出异常。这是不可能的。这正是我将输出文本设置为
display:block
,以使其跨越整个单元格的原因。如果您还有另一个内容,您也希望将其放在具有相同背景颜色的同一单元格中,那么最好将
替换为设置了样式类的
,并将所有内容放在其中(现在您可以删除
显示:block
样式,因为默认情况下
已经是这样)。
style="#{event.eventStatusDesc eq 'Completed' ? 'color: #32cd32;font-weight: bold;':(event.eventStatusDesc eq 'Rescheduled till Further Notice' ? 'color: blue;font-weight: bold;' : 'color: black;')}" />