PrimeFaces Ajax nie aktualizuje

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.

0

Sory coś ucieło

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

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

  1. Przypadek - komentarz w kodzie - DZIALA
  2. Przypadek - komentarz w kodzie - NIE DZIALA
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.

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