您好我使用Primefaces数据表来显示一些数据,并且我在下面的代码中显示了以下机制来显示行索引的数字。(它的工作正常)。 我的问题是:
有什么办法,我可以将英文字母显示为行索引,如 下面?我不想把字母表放在bean和fetch的数组中 他们在每一行渲染。!
<p:dataTable id="resultTable" var="car" value="#{myBean.carList}" rowIndexVar="rowNum">
<p:column headerText="No.">
#{rowNum+1}
</p:column>
<p:column headerText="Name" >
#{car.name}
</p:column>
</p:dataTable>
修改 谢谢你的所有答案。我发现BalusC(不幸的是他删除了答案)和JavaKid的答案很容易然后放Javascript。 但是这些答案中存在一些问题所以我改变了,这就是答案。 如果您在HTML中添加&amp; ## {65+(rowNum + 1)}; ,则会抛出错误,说 十进制表示必须紧跟&#34;&amp;# &#34; 所以我改变了一点,现在它的工作。
ANSWER
<h:outputText value="&##{64+(rowNum+1)};" escape="false"/>
感谢每一个人的答案。
答案 0 :(得分:2)
您可以在javascript中使用数组来映射索引和aphabets:
<script type="text/javascript">
var alphabets = new Array();
alphabets[0] = "A";
alphabets[1] = "B";
alphabets[2] = "C";
// you can declare as: var alphabets =new Array("A","B","C","D");
//...
</script>
<p:dataTable id="resultTable" var="car" value="#{myBean.carList}" rowIndexVar="rowNum">
<p:column headerText="No.">
<script type="text/javascript">
document.write(alphabets[#{rowNum}]);
</script>
</p:column>
<p:column headerText="Name" >
#{car.name}
</p:column>
</p:dataTable>
答案 1 :(得分:2)
或者,如果您的环境支持EL 2.2,您可以使用参数调用方法。我们知道'A'的Unicode表示是'41'(或'a'是'61'),我们可以使用Character.toChars(int codePoint)
实用程序方法来执行转换:
Character.toChars(rowNumber + 41)[0]; //for capital letters
因此,在数字栏中只需使用
<h:outputText value="#{bean.calculateRowIndexChar(rowNum)}"/>
使用bean方法
public char calculateRowIndexChar(int rowNumber) {
return Character.toChars((rowNumber % 26) + 41)[0];
}
如果您的环境不支持EL 2.2,您可以按照How to create a custom EL function?中的BalusC所述创建自定义EL功能。
答案 2 :(得分:2)
您可以使用Ascii字符。
例如 A - A和 B - B .....
同样,您可以使用&amp; ## {64+(rowNum + 1)};