PrimeFaces Ajax nie aktualizuje

Odpowiedz Nowy wątek
2016-07-13 22:14
ViPower
0

Witam, mam mały problem z ajaxem w primefaces. Chodzi o to, że jeśli próbuję (podkreślam próbuję) wywołać pewną metodę z beana w <p:commandbutton> to on wywołuje ajax(tę metodę) zależnie od tego gdzie tego <p:commandbutton> umieszcze. Jeżeli jest on dosyć na zewnątrz wszystkich znaczników to działa idealnie, a jeżeli go zagniezdze w przeroznych znacznikach to juz ajax nie wywołuje mojej metody z beana.

Kod Beana:

@RequestScoped
@ManagedBean(name = "project")
public class ProjectBean {
        private List<Project> criteriaList;

        public ProjectBean() {
        System.out.println("ProjectBean Constructor()");
    }

        public List<Project> getCriteriaList() {
        return criteriaList;
    }

    public void setCriteriaList(List<Project> criteriaList) {
        this.criteriaList = criteriaList;
    }

        public void addSomething(ActionEvent actionEvent) {

        criteriaList = new ArrayList<Project>();

        Project p1 = new Project("test1", "opis1");
        Project p2 = new Project("test2", "opis2");
        Project p3 = new Project("test3", "opis3");
        Project p4 = new Project("test4", "opis4");

        criteriaList.add(p1);
        criteriaList.add(p2);
        criteriaList.add(p3);
        criteriaList.add(p4);

        System.out.println("ADD SOMETHING()");
    }
}

I kod z PrimeFaces:

<!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:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.org/ui">

<ui:composition template="/templates/defaultTemplate/template.xhtml">
    <ui:define name="content">

        <h:form id="headForm">
            <p:tabView id="tabV" dynamic="true" cache="true"
                style="width: 1000px">
                <p:tab title="Something">
                    <h:form id="child">
                        <p:dataTable id="dab" styleClass="margin-top-20" var="pro"
                            value="#{project.criteriaList}">
                            <p:column headerText="ID">
                                <h:outputText value="#{pro.id}" />
                            </p:column>
                            <p:column headerText="Name">
                                <h:outputText value="#{pro.name}" />
                            </p:column>
                            <p:column headerText="Description">
                                <h:outputText value="#{pro.description}" />
                            </p:column>
                        </p:dataTable>
                        <p:tabView dynamic="true" cache="true">
                            <p:tab title="Nope">
                            </p:tab>
                            <p:tab title="Button">
                                <h:form>
                                    <!-- NIE DZIALA -->
                                    <p:commandButton value="Zaladuj" actionListener="#{project.addSomething}" update=":headForm:tabV:child:dab" />
                                </h:form>
                            </p:tab>
                        </p:tabView>
                    </h:form>
                </p:tab>
            </p:tabView>

        </h:form>

        <!-- DZIALA -->
        <h:form>
            <p:commandButton value="Zaladuj" actionListener="#{project.addSomething}" update=":headForm:tabV:child:dab" />
        </h:form>

    </ui:define>
</ui:composition>
</html>

I mamy dwa przypadki

  1. Przypadek
    • W miejscu gdzie zakomentowałem kod poprzez to ten p:commandButton nie jest zagniezdzony i gdy w niego kliknę to natychmiastowo bez przeładowania strony pojawiają mi się wyniki w <p:datatable id="dab">

output konsoli:

ProjectBean Constructor()
ADD SOMETHING()
  1. Przypadek
    • W miejscu gdzie zakomentowałem kod poprzez to ten p:commandButton jest dosyc mocno zagniezdzony i gdy w niego klikam to nic się nie dzieje, nie pojawiają się żadne wyniki w <p:datatable id="tab"> jest po prostu pusto. Z output konsoli wynika, że wykonany jest konstruktor beana, ale jego metoda addSomething() juz nie jest wywolywana.

output konsoli

ProjectBean Constructor()

Jak widać, został wywołany tylko konstruktor beana. Zaś w 1. Przypadku został wywołany i konstruktor i metoda addSomething()

Jak mogę rozwiązać ten problem, bym mógł bez problemowo zaktualizować elementy na stronie bez przeładowywania strony za pomocą zagniezdzonego <p:commandbutton> ??

Jeżeli chodzi o nazwy ID itp. to są tylko testowe.

Pozostało 580 znaków

2016-07-13 22:16
ViPower
0

Sory coś ucieło

  1. Przypadek - komentarz w kodzie - NIE DZIALA
  2. Przypadek - komentarz w kodzie - DZIALA

Pozostało 580 znaków

2016-07-13 22:20
ViPower
0

Sorry my bad again, nie mam możliwości edycji.

  1. Przypadek - komentarz w kodzie - DZIALA
  2. Przypadek - komentarz w kodzie - NIE DZIALA

Pozostało 580 znaków

2016-07-13 22:31
ViPower
1

Ok naprawiłem, wcześniej długo się męczyłem, ale wystarczylo jednego forma na cały mój tak jakby panel dać, a od niego odwoływałem się do poszczegolnych elementow.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0