为什么<h:column> <f:facet name =“header”> <h:outputtext>渲染为th而不是td </h:outputtext> </f:facet> </h:column>

时间:2013-03-24 19:29:07

标签: jsf

我的代码如下:

<h:dataTable class="pretty" value="#{ftManagedBean.ftDataModel}" >
    <h:column>
        <f:facet name="header">
            <h:outputText value="Name"/>
        </f:facet>
    </h:column>
    <h:column>
        <f:facet name="header">
             <h:outputText value="Outstanding"/>
        </f:facet>
    </h:column>       
</h:dataTable>

但它在<th></th>标签之间打印名称和未完成。为什么?我在<td></td>标签中需要它们。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

由于您将<th>标记放在<f:facet name="header">元素中,因此名称和结尾处于最后位置。删除它们,它们将输出到<td>标签。

<h:dataTable class="pretty" value="#{ftManagedBean.ftDataModel}" >
    <h:column>
        <h:outputText value="Name"/>
    </h:column>
    <h:column>
        <h:outputText value="Outstanding"/>
    </h:column>       
</h:dataTable>

有关创建表格的示例,请参阅JSF HTML Tag Reference

答案 1 :(得分:0)

您必须将代码更改为:

<h:dataTable class="pretty" value="#{ftManagedBean.ftDataModel}" >
    <h:column>
        <h:outputText value="Name"/>
    </h:column>
    <h:column>
        <h:outputText value="Outstanding"/>
    </h:column>       
</h:dataTable>

如果您将输出文本包装在<f:facet name="header">内,这与<th>(表格标题)相对应,否则它们将打印在<td>

答案 2 :(得分:0)

我试试这个解决方案,好吧。 (http://www.coderanch.com/t/431222/JSF/java/dynamically-set-panel-header-condition

    <rich:dataGrid value="#{myMB.student.list}" rendered="#{!empty myMB.student and !empty myMB.student.list}" var="st" rowKeyVar="row">
        <rich:panel>                                            
            <f:facet name="header">
            <h:panelGroup id="panelHeader">
                <h:outputText value="Just one student" id="header1" required="true" rendered="#{!myMB.manyStudents}"/>
                <h:outputText value="#{row+1}º Student"  id="header2" required="true"  rendered="#{myMB.manyStudents}"/>
                </h:panelGroup>                                 
            </f:facet>
    <rich:panel>