最近做JSF 项目要用到动态的输出 DataTable里面的数据..
所以,经过几个小时..想了一下..把dataTable里面的列名 以及属性值 在spring里面配置一个Map集合, 然后在service层中注入即可..
在页面只需要在foreach循环中拿到key 和 value 就能..显示table的title 和绑定后台的javabean属性..
具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:icefusion="http://icefusion.googlecode.com/icefusion">
<ui:composition template="/WEB-INF/layouts/general.xhtml">
<ui:define name="content">
<!--绑定Java Bean属性集合-->
<ice:dataTable id="tableID" value="#{inputSapDataController.pritemTableBeanList}" var="pritemTable" varStatus="rowInfo">
<ice:column>
<f:facet name="header">
<ice:outputLabel value="SELECT"></ice:outputLabel>
</f:facet>
<!--选择复选框-->
<ice:selectBooleanCheckbox id="chkId" value="#{(pritemTable.pritemSelected)}"/>
</ice:column>
<!--遍历Map集合,key作为dataTable列名,value作为JavaBean 的属性-->
<c:forEach var="myPritemTable" items="#{inputSapDataController.pritemMapBAPI_PR_CREATE}" >
<ice:column>
<f:facet name="header">
<ice:outputLabel value="#{myPritemTable.key}"/>
</f:facet>
<ice:inputText value="#{pritemTabl['#{myPritemTable.value}']}" styleClass="input"/>
</ice:column>
</c:forEach>
</ice:dataTable>
</ui:define>
</ui:composition>
</html>