JSF使用BootsFaces时如何在dataTableColumn按条件渲染带样式状态
实现方案
你可以将自闭合的<b:dataTableColumn>改为嵌套内容的写法,结合JSTL条件判断渲染不同样式的按钮,具体实现如下:
前置准备
确认你的页面已经引入JSTL核心标签库:
- Facelets(XHTML)页面需在根标签上添加命名空间:
xmlns:c="http://java.sun.com/jsp/jstl/core" - JSP页面需在顶部引入标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
代码替换
将你原有代码中的<b:dataTableColumn value="#{uapp.type}" />替换为以下内容:
<b:dataTableColumn label="Type"> <c:choose> <!-- type=0 展示pending 黄色警告样式 --> <c:when test="#{uapp.type == 0}"> <b:button value="pending" look="warning" size="xs" disabled="true" /> </c:when> <!-- type=1 展示accepted 绿色成功样式 --> <c:when test="#{uapp.type == 1}"> <b:button value="accepted" look="success" size="xs" disabled="true" /> </c:when> <!-- type=2 展示rejected 红色错误样式 --> <c:when test="#{uapp.type == 2}"> <b:button value="rejected" look="danger" size="xs" disabled="true" /> </c:when> <!-- type=3 展示completed 蓝色主题样式 --> <c:when test="#{uapp.type == 3}"> <b:button value="completed" look="primary" size="xs" disabled="true" /> </c:when> </c:choose> </b:dataTableColumn>
配置说明
disabled="true":设置按钮不可点击,仅作为状态展示使用size="xs":设置按钮为超小尺寸,适配表格的行高,不会撑高单元格look属性:对应Bootstrap的按钮主题色,你可以根据业务需求自行调整颜色搭配
如果不需要按钮形态,想要更轻量化的标签样式,也可以将<b:button>替换为<b:badge>组件,调整对应的look属性即可实现同等的颜色区分效果。
内容的提问来源于stack exchange,提问作者andreiw
相关产品推荐
相关产品推荐

