JSF 및 Datatables에 문제가 있습니다. 내 bean에는 Datatable에 의존하여 뷰에 표시되는 개체 목록이 있습니다. 객체는 매우 간단하며 각각은 정수 (ID)와 문자열 ( 설명)로 구성됩니다.JSF Datatable : 단일 명령 단추를 통해 여러 행 제출
최종 목표는 하나 이상의 행 (h : inputtext 필드를 통해)을 동시에 편집 한 다음 버튼을 통해 변경 사항을 제출하는 전체 객체 목록을 사용자에게 인쇄하는 것입니다. 그리고 이것이 문제입니다. 이미 각 행의 편집/저장 버튼을 사용하여 시간당 하나의 행을 편집하여 "성공적으로"Datatables를 사용했지만 최종 사용자가 합계 500 행 이상으로 직면하게되므로이 경우 적용 할 수 없습니다. 여기
내가콩을 (간체 및 추출) 사용되는 코드입니다 :
@ManagedBean
@RequestedScope
public class VlanBean {
private DataModel<VlanWrapper> model;
private List<VlanWrapper> vlans = new ArrayList<VlanWrapper>();
public VlanBean() {
vlans.add(new VlanWrapper(1, ""));
vlans.add(new VlanWrapper(2, "Prova2-2"));
vlans.add(new VlanWrapper(3, ""));
vlans.add(new VlanWrapper(4, ""));
vlans.add(new VlanWrapper(5, ""));
vlans.add(new VlanWrapper(6, "Prova3"));
vlans.add(new VlanWrapper(7, ""));
vlans.add(new VlanWrapper(8, ""));
}
public void commitChanges()
{
System.out.println("Before Model ");
for (VlanWrapper vw : model)
{
System.out.println("ModelOF " + vw.getId() + " - " + vw.getProject() + " - changed: " + vw.changed + ";");
}
}
public DataModel<VlanWrapper> getModel() {
if (model == null)
model = new ListDataModel<VlanWrapper>(vlans);
return model;
}
public void setModel(DataModel<VlanWrapper> model) {
this.model = model;
}
public class VlanWrapper
{
private boolean changed;
private int id;
private String project;
public VlanWrapper(int id, String prj)
{
this.id = id;
this.project = prj;
changed = false;
}
public String getProject() {
return project;
}
public void setProject(String project) {
System.out.println("Setting PRJ..");
changed = true;
this.project = project;
}
public int getId() {
return id;
}
public boolean isChanged() {
return changed;
}
}
}
보기 :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
</h:head>
<h:body>
<f:view>
<h:panelGroup>
<h:form>
<h:commandButton value="Commit changes to DB" action="#{VlanBean.commitChanges}">
</h:commandButton>
</h:form>
<h:dataTable value="#{VlanBean.model}" var="vlans">
<h:column><f:facet name="header">ID</f:facet>#{vlans.id}</h:column>
<h:column><f:facet name="header">Project</f:facet>
<h:inputText value="#{vlans.project}" immediate="true"/>
</h:column>
</h:dataTable>
</h:panelGroup>
</f:view>
</h:body>
</html>
문제는 모든 변경 사항은 내가보기에 할 것입니다 콩에 반영되지 않은 및 주위에 유용한 힌트/게시물 (일부는 아약스 강제로 업데이 트를 제안, 다른 자바 스크립트를 찾지 못했지만, 나는 그들 중 하나를 작동시키지 않았고 아무도 정말 clo 내가 원하는대로 사용하십시오).
나는 또한 ui : repeat를 시도했지만 동일한 동작을합니다. 어떤 아이디어/제안? 나는 Datatable을 사용할 의무가 없기 때문에 다른 솔루션/접근법을 열어 놓았습니다! advace에서
감사합니다, 알베르토 코드에서
답변 해 주셔서 감사합니다. 실제로 흐름에 대한 구현 속성이 필요하지 않습니다 구현해야하지만 그것은 아주 좋은 제안과 예제! 특히 아약스 부분! – kappaalby