Java 如何根据OpenXava引用的值定义每行的颜色/样式?
我有一个涉及实体优先级的实体问题。我希望在OpenXava模块的列表模式中,根据优先级的值为每行提供不同的颜色和视觉样式 这是我的问题实体的代码:Java 如何根据OpenXava引用的值定义每行的颜色/样式?,java,user-interface,openxava,Java,User Interface,Openxava,我有一个涉及实体优先级的实体问题。我希望在OpenXava模块的列表模式中,根据优先级的值为每行提供不同的颜色和视觉样式 这是我的问题实体的代码: package com.yourcompany.tracker.model; import java.time.*; import javax.persistence.*; import org.openxava.annotations.*; import org.openxava.calculators.*; import org.openx
package com.yourcompany.tracker.model;
import java.time.*;
import javax.persistence.*;
import org.openxava.annotations.*;
import org.openxava.calculators.*;
import org.openxava.model.*;
import lombok.*;
@Entity @Getter @Setter
public class Issue extends Identifiable {
@Column(length=100) @Required
String title;
@Stereotype("SIMPLE_HTML_TEXT")
String description;
@ReadOnly
@DefaultValueCalculator(CurrentLocalDateCalculator.class)
LocalDate createdOn;
@ManyToOne(fetch=FetchType.LAZY, optional=true)
@DescriptionsList
Priority priority;
}
这是优先事项:
package com.yourcompany.tracker.model;
import javax.persistence.*;
import javax.validation.constraints.*;
import org.openxava.annotations.*;
import lombok.*;
@Entity @Getter @Setter
public class Priority {
@Id @Max(9)
int level;
@Column(length=40) @Required
String description;
}
这就是我想要达到的效果:
请注意,低优先级的行为灰色,高优先级的行为粗体
我知道有@RowStyle注释,但它似乎是用于简单属性的。如何根据引用(@ManyToOne)值为每行定义不同的样式?@RowStyle允许您使用限定属性,即引用的属性。因此,您可以在实体的@Tab注释中使用@RowStyle,方法如下:
@Entity @Getter @Setter
@Tab(
rowStyles= {
@RowStyle(style="high-priority", property="priority.level", value="7"),
@RowStyle(style="low-priority", property="priority.level", value="3"),
}
)
public class Issue extends Identifiable {
注意@RowStyle中的property属性如何使用“priority.level”,所以我们引用了priority引用的属性。如上所述,当priority.level为7时,我们应用高优先级样式,当priority.level为3时,我们应用低优先级样式。这些样式是在custom.CSS文件中定义的CSS类,因此:
.high-priority {
font-weight: bold;
}
.low-priority {
color: lightgray !important;
}
要了解更多信息,请阅读