Jakarta ee Primefaces dataTable仅添加一行
我一直在翻查档案,想找到一个可能有用的答案,但似乎什么都不适用 我在jsf中有一个包含嵌套数据表的页面,其中包含来自支持bean的列表。页面似乎没有任何问题地保存着数据,但是当我尝试使用p:collector Primefaces对象在我的数据表中添加行时,我的数据表只显示一行。我总是在两个列表中添加一个空对象 列表中包含的对象是实现可序列化的自定义对象 我的支持bean是ConversationScope的,并且在启动会话时实例化支持bean中的数据 这是我的主页:Jakarta ee Primefaces dataTable仅添加一行,jakarta-ee,jsf-2,primefaces,Jakarta Ee,Jsf 2,Primefaces,我一直在翻查档案,想找到一个可能有用的答案,但似乎什么都不适用 我在jsf中有一个包含嵌套数据表的页面,其中包含来自支持bean的列表。页面似乎没有任何问题地保存着数据,但是当我尝试使用p:collector Primefaces对象在我的数据表中添加行时,我的数据表只显示一行。我总是在两个列表中添加一个空对象 列表中包含的对象是实现可序列化的自定义对象 我的支持bean是ConversationScope的,并且在启动会话时实例化支持bean中的数据 这是我的主页: <ui:compos
<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>
我仍然在学习JSF和Primefaces,所以我不知道我是否做了一些永远不会成功的事情
任何帮助都将不胜感激
Matt Tatham实体类具有@override方法,这些方法是在通过创建新实体向导创建新实体时生成的。从实体中删除所有重写的方法并保存它。就这些。现在它可以工作了 这是太多的代码了。请在尽可能小但完整的单个XHTML页面和单个支持bean中隔离问题。例如,要重现完全相同的问题,标签和style=border:none属性是否绝对必要?不别提了。这同样适用于所有其他不必要的标记、属性、属性等。提供尽可能最小的代码,其中只包含通过复制粘贴和运行代码来复制问题所绝对必要的代码。删除所有杂碎。抱歉,我在这里发布问题还是很新手。在发布多个问题的复制和粘贴样板/逐字回答时要小心,这些问题往往被社区标记为垃圾邮件。如果你这样做的话,通常意味着问题是重复的,所以把它们标记为重复的。
@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();
}
}