2017-12-26 68 views
0

스프링 부트, 프라임 모드 및 최대 절전 모드와 함께 STS (스프링 도구 모음)를 사용하고 있습니다.p : selectOneMenu in p : 패널 저장 후 올바른로드 없음

나는 p : datatable이있는 페이지가 있습니다. 마지막 열에는 테이블의 편집 데이터에 대한 p : commandbutton이 있습니다 (p : 대화 상자). 대화 상자를 열면 모든 데이터가 올바르게로드됩니다. 저장하지 않고 대화 상자를 닫고 테이블 데이터의 다른 행을 다시 열면 데이터가 올바르게 다시로드되지만 데이터를 저장하고 테이블의 다른 행에 대한 대화 상자를 열면 p : selectOneMenu 필드에 잘못된 데이터가로드됩니다. 값은 저장된 마지막 대화 상자의 값과 같습니다. 모든 대화 상자 데이터에는 올바른 콤보 상자 (p : selectOneMenu)가 없습니다. 디버깅에서 backing bean에 리턴 된 값이 정확합니다.

어떤 것들은 내가 시도했다 :

  • 변경된 페이지 : 명령 단추 페이지로 : CommandLink는;
  • 대화 상자의 "저장"버튼에서 테이블의 p : 패널과 함께 "업데이트"필드, h : 양식, h : datable;
  • onComplete를 onClick으로 변경하십시오.
  • p : selectOneMenu 대신 h : selectOneMenu 사용;
  • 다운 그레이드 primefaces (현재 6.1) 및 myfaces (현재 2.2.12).

모두 성공하지 못했습니다.

ps : Datatable은 필터링되고 페이지가 매겨집니다.

XHTML :

<p:panel id="pnlData" header="My Table"> 
    <h:form id="frmTable"> 
     <p:dataTable var="item" value="#{RSDMBean.myData}" 
       id="tblTicketsID" widgetVar="tabelaTickets" some things of pagination and filters here...> 

       <p:column /> 
       <p:column /> ... 

      <p:column headerText="Edit"> 
        <p:commandButton value="Edit" 
         actionListener="#{RSDMBean.editTicketLoad(item.idTicket)}" 
         update=":formPnl:pnlTkct" oncomplete="PF('dlgtkt').show();"> 
        </p:commandButton> 
      </p:column> 
    </p:datatable> 
    </h:form 
</p:panel> 

<p:dialog id="dlgtktID" header="Edit ticket" widgetVar="dlgtkt" 
     modal="true"> 
     <h:form id="formPnl"> 
<h:panelGrid id="pnlTkct" columns="2" cellpadding="10" 
       cellspacing="1" style="absolute"> 

       <h:outputText style="font-weight:bold" value="Id Ticket: " /> 
       <h:outputText value="#{RSDMBean.ticketEdited.id}" /> 

     Others fields here... 

<h:outputText style="font-weight:bold" value="County: " /> 
       <p:selectOneMenu style="min-width: 162px;" required="true"> 
        <f:selectItem itemLabel="#{RSDMBean.ticketEdited.county.name}" 
         itemValue="#{RSDMBean.ticketEdited.county.id}" /> 
        <f:selectItems 
         value="#{RSDMBean.countyItensedit.entrySet()}" var="entry" 
         itemValue="#{entry.key}" itemLabel="#{entry.value}" /> 
       </p:selectOneMenu> 

       <p:commandButton value="Save" action="#{RSDMBean.saveEdit}" 
        update=":frmTable:tblTicketsID" oncomplete="PF('dlgtkt').hide();" /> 
end tags here... 

콩 : 페이지에서

import javax.annotation.PostConstruct; 
import javax.faces.bean.RequestScoped; 
import org.springframework.beans.factory.annotation.Autowired; 
. 
. 
. 

@Controller("RSDMBean") 
@RequestScoped 
public class MyMBean implements Serializable { 
@Autowired 
private ResiduoService residuoService; 
@Autowired 
private ResiduoRepository residuoRepository; 
@Autowired 
private CountyRepository countyRepository; 

private Residuo ticketEdited; 

private List<County> county; 

private Map<Long, String> countyItensEdit = new HashMap<Long, String>(); 


public void editTicketLoad(String param) { 
    long idTicket = Long.parseLong(param); 
    ticketEdited = residuoRepository.findOne(idTicket); 
    county = countyRepository.findAll(); 
} 

@PostConstruct 
public void construct() { 
//some loads database here... 
    county = countyRepository.findAll(); 

    if (countyItensEdit.isEmpty()) { 
     for (Municipio c : countyItensEdit) { 

      countyItensEdit.put(c.getId(), c.getNome()); 
     } 
    } 
} 
+0

당신은 잘못된 값을 사용합니다. 개발 모드에서 앱을 실행하고 https://stackoverflow.com/questions/8634156/how-to-find-out-client-id-of-component-for-ajax-update-render-cannot-find-compo를 읽습니다. – Kukeltje

+0

"update"속성이 링크 및 질문과 같이 업데이트되었습니다. 그러나 일하지 않았다. – vctlzac

답변

0

가 : selectOneMenu 값 태그 누락되었습니다 업데이트 속성에

<p:selectOneMenu style="min-width: 162px;" required="true" 
        value="#{RSDMBean.ticketEdited.county.id}"> 
+0

다음 질문은 [mcve]를 만드십시오. 다음과 같은 원인을 찾기가 훨씬 쉬워졌습니다. 패널과 모두 관계가 없습니다. – Kukeltje

+0

좋아요. 나는 다음에 그것을 고려할 것이다. 감사. – vctlzac