gpt4 book ai didi

java - 在 jsf 标签内调用 if 函数两次

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:04 24 4
gpt4 key购买 nike

直接查看标签会更容易理解我的问题,问题出在 styleClass 属性内部:

<h:outputText value="#{prod.actualStock}" 
styleClass="
#{productBean.getSeverity(prod.actualStock, prod.replacementAlertLevel).equals('INFO') ?
'severity-info' : productBean.getSeverity(prod.actualStock, prod.replacementAlertLevel).equals('WARN') ?
'severity-warn' : 'severity-danger'}" />

现在,请注意,我调用了两次“getSeverity()”函数,三个返回中的每一个都为输出文本提供了不同的样式类。有没有办法只调用一次函数并保持相同的逻辑?

“”标签位于表格内。

最佳答案

您可以在 ProductBean 中添加另一个属性保存 ProductBean#getSeverity 结果的类并且在 <h:dataTable> 中使用它之前将其设置在托管 bean 中

@ViewScoped
@ManagedBean
public class Bean {
private List<ProductBean> productBean;
//getters and setters...

//I'm assuming you fill the list here
@PostConstruct
public void init() {
productBean = ...
for(ProductBean pb : productBean) {
pb.setSeverityValue(pb.getSeverity(<parameters>));
}
}
}

在 JSF 代码中,您只需调用该属性

<h:outputText value="#{prod.actualStock}"
styleClass="#{productBean.severityValue.equals('INFO') ? 'severity-info' : productBean.severityValue.equals('WARN') ? 'severity-warn' : 'severity-danger'}" />

关于java - 在 jsf 标签内调用 if 函数两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com