我有一些带有一些列的dataTable,这些列不应该改变。
<p:dataTable id="datatable" value="#{phase.tasks}" var="task">
<p:commandButton id="Testcycles"
action="#{testprojectProducer.doAddTestCycle(phase)}"
update=":formID:Tasks" title="add Test "
icon="ui-icon-plus fa fa-plus">
<!-- <p:ajax oncomplete="#{testprojectProducer.doAddTest(phase)}" update=":formID:Tasks"></p:ajax> -->
</p:commandButton>
<f:facet name="header">
<h:panelGrid>
<h:panelGroup columns="2"
style="display:block; text-align:right">
<p:column>
<f:facet name="header">
Task
</f:facet>
<h:outputText value="#{task.name}" id="description"
title="#{task.description}" />
<pe:tooltip for="description" value="#{task.description}" />
</p:column>
<p:column>
<f:facet name="header">
Tool
</f:facet>
<p:commandLink value="#{task.tool}" ajax="false"
action="#{fileLinkController.openFile()}" />
</p:column>
<p:column>
<f:facet name="header">
Result
</f:facet>
<h:outputText value="#{task.resultDocuments}" />
</p:column>
除此之外,用户还应该有可能添加新列。
<p:columns value="#{task.listTest}"
var="sometest">
<f:facet name="header">
Test
</f:facet>
<p:inputText id="comment"
value="#{sometest.description}">
</p:inputText>
</p:columns>
</p:dataTable>
这是我添加新测试的方法。
public void doAddTest(Phase phase) {
for (Task task : phase.getTasks()) {
task.getListTest().add(new Test(task));
}
}
我意识到无法按行控制列,但我真的需要一些建议,如何保留静态列并添加动态列。
使用按钮调用doAddTest(),您可以在Tag下找到。 首先,在表中显示额外的列并且用户可以选择发表评论。使用此方法,列的内容将写入数据库。
public String doSave() {
if (testprojectProducer.isAddMode()) {
testprojectAddEvent.fire(testprojectProducer.getTestproject());
}
} else {
testprojectUpdateEvent.fire(testprojectProducer.getTestproject());
}
return Pages.LIST_TESTPROJECT;
}