2015-08-04 6 views
0

p: splitButton menuitem для функции удаления с немедленным = «true» всегда удаляет последнюю строку таблицы данных, даже когда средняя строка удалена, она всегда удаляет последняя строка. Как это вызвано и как я могу его решить? Ниже приведена таблица данных внутри мастера p: wizard, и мне нужно проверить значения полей таблицы данных при нажатии следующей кнопки только p: wizard.p: splitButton menuitem с немедленным = «true» всегда удаляет последнюю строку p: dataTable

<p:dataTable id="nomineeEducation" var="education" value="#{nominee.prospective.schoolHistoryToSave}" rowIndexVar="status" 
     rendered="#{fn:length(nominee.prospective.schoolHistoryToSave) > 0}"> 
     <p:column headerText="School" width="250"> 
      <p:selectOneMenu value="#{education.lookupSchoolId}" required="true" 
       requiredMessage="Education# #{status+1}: Please select School."> 
       <f:selectItem itemLabel="--School--" itemValue="#{null}" /> 
       <f:selectItems value="#{selectItemList.schoolList}" /> 
      </p:selectOneMenu> 
     </p:column> 
     <p:column headerText="Degree Obtained" width="250"> 
      <p:selectOneMenu value="#{education.schoolAffiliations[0].educationId}" required="true" 
       requiredMessage="Education# #{status+1}: Please select Degree Obtained."> 
       <f:selectItem itemLabel="--Degree--" itemValue="#{null}" /> 
       <f:selectItems value="#{selectItemList.educationList}" /> 
      </p:selectOneMenu> 
     </p:column> 
     <p:column headerText="Dates Attended" width="150"> 
      <p:selectOneMenu value="#{education.underGradMonth}" required="true" 
       requiredMessage="Education# #{status+1}: Please select Degree Month."> 
       <f:selectItem itemLabel="--Month--" itemValue="#{null}" /> 
       <f:selectItems value="#{selectItemList.monthList}" /> 
      </p:selectOneMenu> 
      <p:selectOneMenu value="#{education.underGradYear}" required="true" 
       requiredMessage="Education# #{status+1}: Please select Degree Year."> 
       <f:selectItem itemLabel="--Year--" itemValue="#{null}" /> 
       <f:selectItems value="#{selectItemList.yearList}" /> 
      </p:selectOneMenu> 
     </p:column>   
     <p:column headerText="Action" width="150"> 
      <p:splitButton value="Select"> 
       <p:menuitem value="Delete" action="#{nominee.deleteEducation(education, false)}" update="nomineeEducation" icon="ui-icon-close" immediate="true"/> 
       <p:menuitem value="Add New" action="#{nominee.addEducation(false)}" update="nomineeEducation" icon="ui-icon-plus" 
        rendered="#{fn:length(nominee.prospective.schoolHistoryToSave) eq (status+1)}" /> 
      </p:splitButton> 
     </p:column> 
    </p:dataTable> 

ответ

0

Как сказал на http://forum.primefaces.org/viewtopic.php?f=3&t=38506, вы не можете отправить данные для резервного боб, если вы используете immediate="true".

Обходной бы изменить splitButton код что-то вроде:

<p:splitButton value="Select"> 
    <p:menuitem value="Delete" 
       action="#{nominee.deleteEducation(education, false)}" 
       update="nomineeEducation" 
       icon="ui-icon-close" 
       process="@this" 
       global="false" 
       /> 
    <p:menuitem value="Add New" 
       action="#{nominee.addEducation(false)}" 
       update="nomineeEducation" 
       icon="ui-icon-plus" 
       rendered="#{fn:length(nominee.prospective.schoolHistoryToSave) eq (status+1)}" 
       /> 
</p:splitButton>