Как соединить одну HTML-страницу с данными другой страницы с помощью Primefaces - PullRequest
0 голосов
/ 24 апреля 2019

Я отправляю некоторые переменные со страницы .xhtml на контроллер, который отправляет данные на другую страницу, на которой есть другой контроллер, который обрабатывает данные этой страницы, которые я пытался использовать с помощью методов установки и получения. проблема в том, что я не знаю, что делать с @ PostConstruct.

XHTML файл

<h:form id="frmStart">
 <p:growl id="growl" sticky="true" showDetail="true" />
 <p:panel id="pnlDatos">
 <p:dataTable id="tblObjeto" var="object" 
              value="#{parentControlador.listObjects}" 
              widgetVar="tblObjeto"
              emptyMessage="No hay datos">
  <f:facet name="header">
                            Objetos     
  </f:facet>




<p:column headerText="Contar" width="20">
 <p:commandButton class="pi pi-list" id="openDialogContar" value="Ver"
                                             action="#{parentControlador.FindItems(object)}"
                                             />
</p:column>
</p:dataTable>
</p:panel>
</h:form>

Код контроллера ParentControlador

    @Inject Item item;

public String FindItems(ObjectParent objectParent) {
        String type="";
        String result="";
        //variable that i am going to send
                ItemControlador itemControlador = new ItemControlador();
                itemControlador.setCorte(objectParent);
        try {

       if(item.listarItemsA(objectParent.getCorte_id()).isEmpty()){
                    this.listaItems = item.listarItemsB(objectParent.getCorte_id());
                    type = "A";
                }else{
                    this.listaItems = item.listarItemA(objectParent.getCorte_id());
                    type = "B";
                } 
                this.objeto = objectParent;  

                result = type == "A"? "A.xhtml":"B.xhtml"; 
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                            "The   objectParent doesnt have items "+e.getMessage()));
        }
        return result;
    }

Это контроллер, который обрабатывает представление для «A.xhtml», «B.xhtml» Item

     @PostConstruct
     private Parent parent;
    public void init() {
    //From what i see, thos is ejecuted when a .xhtml page is using the controller to retrieve the dataTable
    //
                if(item.listarItemsB(objectParent.getCorte_id()).isEmpty()){
                    this.listaObjetos = item.listarItemA(objectParent.getCorte_id());
                }else{
                    this.listaObjetos = item.listarItemsA(objectParent.getCorte_id());
                }

    }

    public Parent getCorte() {
        return corte;
    }

    public void setCorte(Parent parent) {
        this.parent = parent;
    }

как отправить данные из представления xhtml, которое обрабатывает один контроллер X для просмотра данных, отправить на другую страницу xhtml, которая использует другой контроллер Y, и показать на другой странице, которая использует Y-контроллер для просмотра данных отправленных данных.

1 Ответ

0 голосов
/ 25 апреля 2019

В случае, если вам нужно разделить некоторые данные между двумя .xhtml представлениями, вы можете поместить свои данные в контроллер @SessionScoped, который будет иметь одинаковое состояние для обоих представлений в рамках одного сеанса браузера и видим для обоихПросмотры.Просто с page1.xhtml отправьте свои данные на @SessionScoped контроллер и получите доступ к ним с page2.xhtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...