좋아, 조금 줄이고 게시물 끝에 코드를 넣으려고했습니다. 답변 해 주셔서 감사합니다.p : p : dialog에서 데이터 수정 후 datatable을 올바르게 새로 고치지 않았습니다.
주제에 대한 몇 가지 질문/답변을 읽고 해결 방법을 찾지 못한 경우 여기에 내 문제가 있습니다. 가능한 한 간결하게 작성되었으므로 일부 코드가 잘릴 수 있으므로 자세한 내용을 자유롭게 물어보십시오. 나는 또한 JSF, primefaces 세계에 상당히 익숙하다.
Spring/Hibernate/Primefaces를 기반으로 기존 웹 응용 프로그램에서 발전/수정 사항을 개발합니다. 사용자 인터페이스에는 일부 p : datatable : 회사, 사용자가 포함 된 탭뷰가 있습니다. 'formCompany'에서
는, 버튼 대화 'createCompany'을 표시
그래서 여기 내 사용 사례입니다.
나는 (이름과 코드가 societeEntity을 위해 필수) 회사 'AAAA의 /의 AAAA'를 만들 - 회사가 추가됩니다> 'CompaniesTable'
나는이 회사 존 '에 관련된 사용자를 생성/'AAAA'(이름과 회사 utilisateurEntity을위한 필수 필드입니다) - 사용자가 회사 이름으로 만든 'USERTABLE'에 표시됩니다>는 'AAAA'
내가이 회사의 'BBBB'에 이름을 수정 저장하고 -> 'userTable'에서 회사 이름이 업데이트되지 않음
나는 userTable이 commandButton의 'update'속성으로 데이터베이스에서 새로 고쳐지지 않는다고 생각합니다. ": panelBas : formUser : userTable"의 'update'속성은 클라이언트 측에서만 제대로 작동합니다.
사용자가 포함 된 데이터 테이블은 새로운 회사 이름 'bbbb'로 새로 고쳐집니다.
트릭 내가 시도 : 페이지에
- 업데이트 속성 : 그 widgetVar ID로 commanbButton.oncomplete와 '/ 다시로드/업데이트 새로 고침'는 hypothetic 전화 : 명령 단추 =>
- 이 페이지에서 USERTABLE에 도달 실패 012 : 실패> =을 ('USERTABLE') PF를 사용하는 방법은 다음
회사를 저장하는 버튼의 코드 (primefaces 문서는 정말 ... 도움이되지 않음)
구성 요소 p : datatable에는 서버에서 데이터를 다시로드하는 메소드가없는 것 같습니다. 그러면 백킹 빈에 회사를 저장 한 후 내 사용자 데이터 테이블을 어떻게 업데이트 할 수 있습니까?
아래 코드 ...
메인 tabview, 대화 상자 datatables 함유 XHTML 페이지를 도시한다.
@Component("companyDialog")
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class CompanyDialog {
// Managed property used by datatable attribute 'value'
@ManagedProperty("#{companyList}")
private List<SocieteEntity> companyList;
// Managed property used by datatable attribute 'filteredValue'
@ManagedProperty("#{companyFilteredList}")
private List<SocieteEntity> companyFilteredList;
@ManagedProperty("#{societeEntity}")
private SocieteEntity societeEntity;
@Override
public void save() {
...
}
}
이 UserDialog.java
@Component("userDialog")
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserDialog {
// Managed property used by datatable attribute 'value'
@ManagedProperty("#{utilisateurList}")
private List<UtilisateurEntity> utilisateurList;
// Managed property used by datatable attribute 'filteredValue'
@ManagedProperty("#{utilisateurFilteredList}")
private List<UtilisateurEntity> utilisateurFilteredList;
@ManagedProperty("#{utilisateurEntity}")
private UtilisateurEntity utilisateurEntity;
public void recherche() {
// Fills the managed property utilisateurList (used by the datatable)
...
}
}
사전에 감사하고 좋은 하루 되세요
CompanyDialog.java : XHTML
여기<p:tabView id="panelBas" widgetVar="wvPanelBas" activeIndex="#{searchDialog.activeIndex}">
<p:tab title="Companies">
<h:form id="**formCompany**">
<p:dataTable id="CompaniesTable" value="#{companyDialog.companyList}" var="item3" lazy="false"
tableStyle="text-align: center;width:auto" paginator="true" rowsPerPageTemplate="5,10,15,20,30,50,100" rows="15"
sortBy="#{item3.nom}" sortOrder="ascending" filteredValue="#{companyDialog.companyFilteredList}">
...
</p:dataTable>
</h:form>
</p:tab>
<p:tab title="Users">
<h:form id="formUser">
<p:dataTable id="userTable" widgetVar="wvUserTable" **value="#{userDialog.utilisateurList}"** var="item2" lazy="false"
tableStyle="text-align: center;width:auto" paginator="true" rowsPerPageTemplate="5,10,15" rows="10"
sortBy="#{item2.nom}" sortOrder="ascending" filteredValue="#{userDialog.utilisateurFilteredList}">
**<!-- This value is not updated when associated company's name is modified-->
<p:column filterBy="#{item2.societe.nom}" sortBy="#{item2.societe.nom}" headerText="Company">
<h:outputText value="#{item2.societe.nom}" />
</p:column>**
...
<p:column filterBy="#{item2.nom}" sortBy="#{item2.nom}" headerText="Nom" sortOrder="ascending">
<h:outputText value="#{item2.nom}" />
</p:column>
</p:dataTable>
</h:form>
</p:tab>
</p:tabView>
<!-- This dialog allows to modify company data -->
<p:dialog header="New Company" widgetVar="createCompany" id="createCompany" resizable="true" modal="true" width="500" showEffect="clip" hideEffect="clip">
<h:form>
...
<!-- Company modification form -->
<p:commandButton value="Save" update="companyNameMsg companyCodeMsg :panelBas:formCompany:CompaniesTable **:panelBas:formUser:userTable**" ajax="true"
actionListener="#{companyDialog.save}" icon="ui-icon-disk"
**oncomplete="if(args && !args.validationFailed) { PF('createCompany').hide(); }"** />
</h:form>
</p:dialog>
는 콩의 코드입니다.
도 [좋은 질문입니다] (https://stackoverflow.com/help/how-to-ask) –