我一直在挖掘檔案找到可能有幫助的答案,但似乎沒有什麼適用。Primefaces dataTable只添加一行
我有一個jsf中的頁面,其中嵌套的dataTables擁有支持bean的列表。該頁面似乎在保存數據時沒有任何問題,但是當我嘗試使用p:collector Primefaces對象添加我的dataTables的行時,我的dataTable只顯示一行。我總是爲這兩個列表添加一個空對象。
列表中包含的對象是實現Serializable的自定義對象。
我的支持bean是ConversationScoped,當對話開始時,支持bean中的數據被實例化。
這是我的主網頁:
<ui:composition template="/templates/pageLayout.xhtml">
<ui:define name="pageContent">
<h:form id="genericWorkflowMainForm" enctype="multipart/form-data">
<p:panel id="actionList">
<div align="right">
<p:commandButton id="addActionButton" value="Add Action" update="actionTable"
action="#{createGenericWorkflowBean.addAction}" ajax="false">
<p:collector id="addActionCollector" value="#{createGenericWorkflowBean.actionRow}"
addTo="#{createGenericWorkflowBean.genericWorkflowData.actionGroup.actionCompletionList}"/>
</p:commandButton>
</div>
<h:dataTable id="actionTable" var="actions"
value="#{createGenericWorkflowBean.genericWorkflowData.actionGroup.actionCompletionList}">
<h:column>
<h:outputLabel value="Action " />
<h:inputTextarea id="actionText" value="#{actions.actionRecord.actionText}" />
<br/>
<p:panel id ="actioneePanel">
<div align="right">
<p:commandButton id="addApproverButton" value="Add Approver" onclick="addApprover.show()"/>
</div>
<h:dataTable value="#{actions.actionRecord.actionees}" id="actioneeListValues" var="actioneeRecord">
<h:column>
<h:outputText id="actioneeLabel" value="Actionee " />
<h:outputText id="actionee" value="#{actioneeRecord.user.user.name}" />
<h:outputText id="actioneeCommentlabel" value="Comments " rendered="#{actioneeRecord.user.display}"/>
<h:inputTextarea id ="actioneeComment" value="#{actioneeRecord.userComment}" rendered="#{actioneeRecord.user.display}"/>
<br/>
<p:commandLink id="removeActionee" value="Remove" update="actioneeListValues" rendered="#{!actioneeRecord.user.display}">
<p:collector value="#{actioneeRecord}" removeFrom="#{actions.actionRecord.actionees}"/>
</p:commandLink>
</h:column>
</h:dataTable>
<p:dialog id="addApprover" header="Add Approver" widgetVar="addApprover" modal="false" closable="false"
resizable="false" width="250">
<div>
<p:autoComplete id="autoCompleteApprover" value="#{createGenericWorkflowBean.newApprover}"
/**//>
<br/>
<p:commandButton id="addNewApprover" title="Add Approver" value="Add"
update="actioneeListValues" onclick="addApprover.hide()" ajax="false"
action="#{createGenericWorkflowBean.addApprover()}">
<p:collector value="#{createGenericWorkflowBean.newApprover}"
addTo="#{actions.actionRecord.actionees}"/>
</p:commandButton>
</div>
</p:dialog>
</p:panel>
</h:column>
</h:dataTable>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
下面是我支持bean的,涉及到與p的部分:該列表的集電極添加和刪除部分。
@Named
@ConversationScoped
public class CreateGenericWorkflowBean extends WorkflowBean {
@Inject
Conversation conversation;
private Actionee newApprover;
private ActionCompletionRecord actionRow = new ActionCompletionRecord();
private Actionee actioneeRow = new Actionee();
public GenericWorkflowData getGenericWorkflowData() {
return (GenericWorkflowData) getData();
}
public void addApprover() {
setNewApprover(new Actionee());
}
public void addAction() {
actionRow = new ActionCompletionRecord();
}
}
我仍然在學習JSF和Primefaces,所以我不知道如果我做的東西,將只是不工作。
任何幫助將不勝感激。
馬特泰勝
這是太多的代碼。請儘可能以最小的可能性完成單個XHTML頁面和單個支持bean。例如,爲了重現完全相同的問題,絕對需要''標記和'style =「border:none」'屬性的絕對必要嗎?沒有?只是省略它。這同樣適用於所有其他不必要的標籤,屬性,屬性等。提供儘可能最小的包含**的代碼**只需複製並運行代碼即可自行重現問題的代碼。 –
BalusC
刪除所有的糠。。對不起,我在這裏發佈問題還很新。 – mtatham