Java JSF:空嵌套数据表

Java JSF:空嵌套数据表,java,jsf,jboss,datatable,Java,Jsf,Jboss,Datatable,我正在基于JSF为JBoss6.1编写自己的JMX控制台实现 托管bean有一部分代码: @ManagedBean @SessionScoped public class InspectionBean implements Serializable { private MBeanInfo data; private List<OperationWrapper> operations; public void setInitData(MBeanInfo da

我正在基于JSF为JBoss6.1编写自己的JMX控制台实现

托管bean有一部分代码:

@ManagedBean
@SessionScoped
public class InspectionBean implements Serializable {
    private MBeanInfo data; 
    private List<OperationWrapper> operations;

    public void setInitData(MBeanInfo data) {
        this.data = data;   
        initOperations();
    }

    public List<MBeanOperation> getOperations() {
        return operations;
    }

    public void setOperations(List<MBeanOperation> list) {
        operations = list;
    }

    private void initOperations() {
        operations = new ArrayList<MBeanOperation>();

        for (MBeanOperationInfo opInfo : data.getOperations()) {
            OperationWrapper opWrapper = new OperationWrapper();

            opWrapper.setName(opInfo.getName());
            opWrapper.setDescription(opInfo.getDescription());
            opWrapper.setReturnType(opInfo.getReturnType());

            List<ParameterWrapper> paramList = 
                    new ArrayList<ParameterWrapper>(); 

            for (MBeanParameterInfo paramInfo : opInfo.getSignature()) {
                ParameterWrapper paramWrapper = 
                        new ParameterWrapper();

                paramWrapper.setName(paramInfo.getName());
                paramWrapper.setDescription(paramInfo.getDescription());
                paramWrapper.setType(paramInfo.getType());
                paramWrapper.setValue("");

                paramList.add(paramWrapper);
            }

            mBeanOp.setSignature(paramList);

            operations.add(mBeanOp);
        }
    }

    //some other code
}
这是一个问题页面的代码:

<h:dataTable value="#{inspectionBean.operations}" var="operation"
        border="1" width="100%" cellpadding="5"
        style="border-style: solid; border-collapse: collapse;">
    <h:column>
        <f:facet name="header">Operation</f:facet>
        #{operation.name}
    </h:column>

    <h:column>
        <f:facet name="header">Return Value</f:facet>
        #{operation.returnType}
    </h:column>

    <h:column>
        <f:facet name="header">Description</f:facet>
        #{operation.description}
    </h:column>

    <h:column>
        <f:facet name="header">Parameters</f:facet>

        <h:form>
            <h:dataTable value="#{operation.signature}" var="param"
                    rendered="#{not empty operation.signature}"
                    border="1" width="100%"
                    style="border-style: solid; border-collapse: collapse;">
                <h:column>
                    #{param.name}
                </h:column>

                <h:column>
                    #{param.type}
                </h:column>

                <h:column>
                    #{param.description}
                </h:column>

                <h:column>
                    <h:inputText value="#{param.value}" size="20"/>
                </h:column>
            </h:dataTable>

            <a4j:commandButton value="Invoke" 
                    action="#{inspectionBean.invokeOperation(operation)}" 
                    render="@none"/>
        </h:form>
    </h:column>  
</h:dataTable>

活动
#{operation.name}
返回值
#{operation.returnType}
描述
#{operation.description}
参数
#{param.name}
#{param.type}
#{param.description}
显示页面的这一部分时,如下所示: 所以嵌套的数据表中没有文本

正如您所看到的,表格位于它们应该位于的位置。还有文本单元格。而且数量合适。但是文本在哪里呢

调试没有结果。列表中填写了正确的数据


怎么了?如何修复此问题?

罪魁祸首在嵌套表标记的
var
属性中:


#{param.name}
...
#{param}
是一个保留的EL变量名,它引用了由获取的请求参数映射。例如,
page.xhtml?id=123
在使用
{param.id}
时将给出打印
123
。您可以也不应该覆盖它

给它一个不同的名字。例如,
var=“signature”
{signature.name}

另见:

罪魁祸首在嵌套表标记的
var
属性中:


#{param.name}
...
#{param}
是一个保留的EL变量名,它引用了由获取的请求参数映射。例如,
page.xhtml?id=123
在使用
{param.id}
时将给出打印
123
。您可以也不应该覆盖它

给它一个不同的名字。例如,
var=“signature”
{signature.name}

另见:

校正后,所有工作正常。愚蠢的错误:)非常感谢你的帮助。改正后一切都很好。愚蠢的错误:)非常感谢你的帮助。
public class ParameterWrapper implements Serializable {
    private String name;
    private String type;
    private String description;
    private String value;

    //simple getters and setters
}
<h:dataTable value="#{inspectionBean.operations}" var="operation"
        border="1" width="100%" cellpadding="5"
        style="border-style: solid; border-collapse: collapse;">
    <h:column>
        <f:facet name="header">Operation</f:facet>
        #{operation.name}
    </h:column>

    <h:column>
        <f:facet name="header">Return Value</f:facet>
        #{operation.returnType}
    </h:column>

    <h:column>
        <f:facet name="header">Description</f:facet>
        #{operation.description}
    </h:column>

    <h:column>
        <f:facet name="header">Parameters</f:facet>

        <h:form>
            <h:dataTable value="#{operation.signature}" var="param"
                    rendered="#{not empty operation.signature}"
                    border="1" width="100%"
                    style="border-style: solid; border-collapse: collapse;">
                <h:column>
                    #{param.name}
                </h:column>

                <h:column>
                    #{param.type}
                </h:column>

                <h:column>
                    #{param.description}
                </h:column>

                <h:column>
                    <h:inputText value="#{param.value}" size="20"/>
                </h:column>
            </h:dataTable>

            <a4j:commandButton value="Invoke" 
                    action="#{inspectionBean.invokeOperation(operation)}" 
                    render="@none"/>
        </h:form>
    </h:column>  
</h:dataTable>