2012-06-27 1 views
0

Я искал архивы, чтобы найти ответ, который может помочь, но ничего действительно не применимо.Первичные данныеТаблица добавляет только одну строку

У меня есть страница в jsf с вложенными dataTables, которая содержит список из бэк-бэка. На странице, по-видимому, хранятся данные без каких-либо проблем, но когда я пытаюсь добавить строки из моих таблиц данных, используя объект PR: collector Primefaces, в моей базе данных всегда отображается только одна строка. Я всегда добавляю пустой объект в оба списка.

Объекты, содержащиеся в списке, являются пользовательскими объектами, реализующими Serializable.

My bean bean is ConversationScoped, а данные в фонотеке создаются при запуске разговора.

Вот моя главная страница:

<ui:composition template="/templates/pageLayout.xhtml"> 

    <ui:define name="pageContent"> 

     <h:form id="genericWorkflowMainForm" enctype="multipart/form-data"> 

      <p:panel id="actionList"> 
       <div align="right"> 
        <p:commandButton id="addActionButton" value="Add Action" update="actionTable" 
            action="#{createGenericWorkflowBean.addAction}" ajax="false"> 
         <p:collector id="addActionCollector" value="#{createGenericWorkflowBean.actionRow}" 
            addTo="#{createGenericWorkflowBean.genericWorkflowData.actionGroup.actionCompletionList}"/> 
        </p:commandButton> 
       </div> 
       <h:dataTable id="actionTable" var="actions" 
          value="#{createGenericWorkflowBean.genericWorkflowData.actionGroup.actionCompletionList}"> 
        <h:column> 
         <h:outputLabel value="Action " /> 
         <h:inputTextarea id="actionText" value="#{actions.actionRecord.actionText}" /> 
         <br/> 
         <p:panel id ="actioneePanel"> 
          <div align="right"> 
           <p:commandButton id="addApproverButton" value="Add Approver" onclick="addApprover.show()"/> 
          </div> 
          <h:dataTable value="#{actions.actionRecord.actionees}" id="actioneeListValues" var="actioneeRecord"> 
           <h:column> 

            <h:outputText id="actioneeLabel" value="Actionee " /> 
            <h:outputText id="actionee" value="#{actioneeRecord.user.user.name}" /> 

            <h:outputText id="actioneeCommentlabel" value="Comments " rendered="#{actioneeRecord.user.display}"/> 
            <h:inputTextarea id ="actioneeComment" value="#{actioneeRecord.userComment}" rendered="#{actioneeRecord.user.display}"/> 

            <br/> 
            <p:commandLink id="removeActionee" value="Remove" update="actioneeListValues" rendered="#{!actioneeRecord.user.display}"> 
             <p:collector value="#{actioneeRecord}" removeFrom="#{actions.actionRecord.actionees}"/> 
            </p:commandLink> 

           </h:column> 

          </h:dataTable> 

          <p:dialog id="addApprover" header="Add Approver" widgetVar="addApprover" modal="false" closable="false" 
             resizable="false" width="250"> 
           <div> 
            <p:autoComplete id="autoCompleteApprover" value="#{createGenericWorkflowBean.newApprover}" 
                /**//> 
            <br/> 
            <p:commandButton id="addNewApprover" title="Add Approver" value="Add" 
                update="actioneeListValues" onclick="addApprover.hide()" ajax="false" 
                action="#{createGenericWorkflowBean.addApprover()}"> 
             <p:collector value="#{createGenericWorkflowBean.newApprover}" 
                addTo="#{actions.actionRecord.actionees}"/> 

            </p:commandButton> 

           </div> 
          </p:dialog> 
         </p:panel> 
        </h:column> 
       </h:dataTable> 
      </p:panel> 

     </h:form> 
    </ui:define> 
</ui:composition> 

Ниже перечислены части моего бэк-бобов, которые относятся к р: Коллектор добавление и удаление части списка.

@Named 
@ConversationScoped 
public class CreateGenericWorkflowBean extends WorkflowBean { 

    @Inject 
    Conversation conversation; 

    private Actionee newApprover; 

    private ActionCompletionRecord actionRow = new ActionCompletionRecord(); 

    private Actionee actioneeRow = new Actionee(); 

    public GenericWorkflowData getGenericWorkflowData() { 
     return (GenericWorkflowData) getData(); 
    } 

    public void addApprover() { 

     setNewApprover(new Actionee()); 

    } 

    public void addAction() { 
     actionRow = new ActionCompletionRecord(); 
    } 

} 

Я все еще изучаю JSF и Primefaces, поэтому не знаю, сделал ли я что-то, что никогда не сработает.

Любая помощь была бы принята с благодарностью.

Matt Tatham

+2

Это слишком много кода. Пожалуйста, изолируйте проблему на минимально возможной, но полной отдельной странице XHTML и одном бэкбоне. Например, являются тегом '' и "style =" border: none "' атрибут '' абсолютно необходим для воспроизведения точно такой же проблемы? Нет? Просто пропустите это. То же самое относится ко всем другим ненужным тэгам, атрибутам, свойствам и т. Д. Предоставьте наименьший возможный код, содержащий ** только ** код, который абсолютно необходим, чтобы воспроизвести проблему самостоятельно, просто скопировав и запустив код. – BalusC

+0

Удалена всякая мякина. Извините, я все еще очень новичок в публикации вопросов здесь. – mtatham

ответ

0

Класс объект имеет @Override методы, которые генерировались при создании нового юридического лица путем создания нового мастера объекта. удалить все переопределенные методы из объекта и сохранить его. Это все. Теперь это сработает.

+1

Будьте осторожны при публикации копий и вставке шаблонов/дословных ответов на несколько вопросов, они, как правило, помечены сообществом сообществом. Если вы делаете это, это обычно означает, что вопросы являются дубликатами, поэтому вместо этого отмечайте их как таковые. – Kev

Смежные вопросы