gpt4 book ai didi

java - 如何从 Primefaces 的子表中调用方法?

转载 作者:行者123 更新时间:2023-12-01 15:05:36 27 4
gpt4 key购买 nike

我使用 primefaces 的时间不长,我发现我无法使用 <p:commandButton />因为它只是无法到达该方法,该方法是可以的,我在表(和子表)中尝试了它,它在那里工作得很好(一切都在表单内),问题是我需要用户能够选择所有子表,所以,我想也许可以使用一个按钮,但似乎子表不允许这样做,我可以通过其他方式做到这一点吗?或者也许我必须使用另一种方式从子表调用我的方法,有人知道吗?

谢谢

我的一些代码

<h:form>
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable id="case" var="ticket" value="#{CaseBean.selectedCase.tickets}">
<p:columnGroup>
<p:row>
<p:column> Action:</p:column>
<p:column>
<!-- This doesn't work, removed. -->
<p:commandButton value="Aprove" action="#{CaseBean.acept()}">
</p:commandButton>
</p:column>
</p:row>
</p:columnGroup>

<p:subTable var="detail" value="#{ticket.detail}">
<f:facet name="header">
Resume:
</f:facet>
<!-- some data... -->
<p:column>
<!-- doesn't work either -->
<p:commandButton value="Aprove" action="#{CaseBean.aceptTicket()}">
</p:commandButton>
</p:column>
<!-- show my data -->

该表工作完美,它显示了所有数据,日志文件没有显示任何错误,因此,当我尝试将我的命令按钮从表中写入时,它工作完美,如果我无法将其写入子表中好的,但是,我怎么能把它写在表里呢?它也没有出现在那里。

最佳答案

不客气:)但如果我是你,我不会使用子表,我会考虑另一种解决方案。也许我会这样做,我会使用两个不同的数据表,第一个包含父列表,第二个包含子列表元素,并且所做的每个选择都会触发第二个表的更新...我在 IDE 上尝试过,效果很好

<h:form id="form">
<p:dataTable var="cas" value="#{beanCase.myListOfCase}"
selection="#{beanCase.selectedCase}" rowKey="#{cas.idCase}"
selectionMode="single">
<p:ajax event="rowSelect" update=":form:TicketTable" />
<p:column headerText="Id Case">
<h:outputText value="#{cas.idCase}" />
</p:column>
<p:column headerText="Case Name ">
<h:outputText value="#{cas.caseName}" />
</p:column>
<p:column headerText="Case Detail">
<h:outputText value="#{cas.caseDetail}" />
</p:column>
<p:column headerText="Action">
<p:commandButton value="Accept Case" update=":form:TicketTable"></p:commandButton>
</p:column>
</p:dataTable>
<p:dataTable id="TicketTable" var="ticket"
value="#{beanCase.selectedCase.tickets}">
<p:column headerText="Ticket Number">
<h:outputText value="#{ticket.idTicket}" />
</p:column>
<p:column headerText="Ticket Details">
<h:outputText value="#{ticket.labelTicket}" />
</p:column>
<p:column headerText="show">
<h:outputText value="#{ticket.show}" />
</p:column>
<p:column headerText="this show is brought to you by">
<h:outputText value="#{ticket.sponsor}" />
</p:column>
<p:column headerText="Make a Reservation">
<p:commandButton value="Buy" action="#{beanCase.buyTicket()}">
<f:setPropertyActionListener value="#{ticket}"
target="#{beanCase.selectedTicket}" />
</p:commandButton>
</p:column>
</p:dataTable>

在此之前,您必须为案例和工单创建数据模型类

public class CaseDataModel extends ListDataModel<Case> implements
SelectableDataModel<Case> {
CaseDAO caseDAO = new CaseDAO();

public CaseDataModel() {
}

public CaseDataModel(List<Case> cases) {
super(cases);
}

@Override
public Case getRowData(String arg0) {
List<Case> listOfMyObjet = (List<Case>) caseDAO.findAll();
for (Case obj : listOfMyObjet) {
if (String.valueOf(obj.getIdCase()).equals(arg0))
;
return obj;
}
return null;
}

@Override
public String getRowKey(Case arg0) {
return String.valueOf(arg0.getIdCase());
}

}

关于java - 如何从 Primefaces 的子表中调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com