Nano Hash - криптовалюты, майнинг, программирование

Прослушиватель действий командной кнопки Primefaces не вызывается

Я использую primefaces 3.0 и jsf 2.0.
Я подготовил мастер клиента, который добавляет клиента с помощью мастера и в то же время отражается в таблице данных. Затем я обновил утилиту редактирования в datatable. Затем я добавил кнопку удаления в datatable и попытался вызвать метод удаления bean-компонента.
Но когда я нажимаю на кнопку удаления, выполняется проверка мастера для добавления клиента. Поэтому я создал еще один файл ClientEditdatatable.xhtml и включил его в clientmaster.xhtml, но тот же результат остался. Теперь я хочу добавить утилиту удаления в datatable. Я пробовал много трюков, чтобы сделать это.
Я просто хочу передать идентификатор клиента через прослушиватель действий, удалить и обновить данные, но кнопка команды не выполняет метод.
Пожалуйста, совет. Мой код, как показано ниже:

ClientMaster.xhtml

<h:body> 
    <ui:composition template="/template/mainLayout.xhtml" >
        <ui:define name="pageContent">
            <h:form id="cm">
                <p:growl life="5000" showDetail="true" showSummary="true" id="mymessage" autoUpdate="true"/>
                <br/>
                user id :#{sessionScope.USER_ID};
                <br/>
                <p:wizard widgetVar="wiz" flowListener="#{clientUitility.onFlowProcess}" showNavBar="true"  >
                    <p:tab id="personal" title="Personal" >
                        <p:panel id="personal1" header="Personal Details">
                            <!-- <h:messages errorClass="error"/> -->
                            <h:panelGrid columns="6" styleClass="grid">
                                <h:outputText value="First Name:*" />
                                <p:inputText required="true" label="FirstName"
                                             value="#{clientUitility.client.firstName}" >
                                </p:inputText>

                                <h:outputText value="Middle Name:*" />
                                <p:inputText required="true" label="MidddleName"
                                             value="#{clientUitility.client.middleName}" />

                                <h:outputText value="Last Name:*" />
                                <p:inputText required="true" label="LastName"
                                             value="#{clientUitility.client.lastName}" />

                                <h:outputText value="Login ID:* " />
                                <p:inputText required="true" label="LoginID"
                                             value="#{clientUitility.client.loginID}"/>

                                <h:outputText value="Password:* " />
                                <p:inputText required="true" label="Password"
                                             value="#{clientUitility.client.password}"/>
                            </h:panelGrid>
                        </p:panel>
                    </p:tab>
                    <p:tab id="address" title="Address" >
                        <p:panel id="address1" header="Adress Details">
                            <!-- <h:messages errorClass="error"/> -->
                            <h:panelGrid columns="6" styleClass="grid">
                                <h:outputText value="Address:*" />
                                <p:inputText required="true" label="Address1"
                                             value="#{clientUitility.client.address1}" />
                                <h:outputText />
                                <p:inputText label="Address2"
                                             value="#{clientUitility.client.address2}" />
                                <h:outputText />
                                <p:inputText label="Address3"
                                             value="#{clientUitility.client.address3}" />
                                <h:outputText value="City:* " />
                                <p:inputText required="true" label="City"
                                             value="#{clientUitility.client.city}" />

                                <h:outputText value="Pincode:* " />
                                <p:inputText required="true" label="Pincode"
                                             value="#{clientUitility.client.pincode}" />
                                <h:outputText value="State:* " />
                                <p:inputText required="true" label="State"
                                             value="#{clientUitility.client.state}" />
                            </h:panelGrid>
                        </p:panel>
                    </p:tab>
                    <p:tab id="contact" title="Contact" >
                        <p:panel id="contact1" header="Contact Information">
                            <!-- <h:messages errorClass="error"/> -->
                            <p:panelGrid columns="4" styleClass="grid">
                                <h:outputText value="Mobile:* " />
                                <p:inputText required="true" label="MobileNo"
                                             value="#{clientUitility.client.mobileNo}" />
                                <h:outputText value="Email ID: "/>
                                <p:inputText label="EmailID"
                                             value="#{clientUitility.client.emailID}" />
                                <h:outputText value="STD Code: "/>
                                <p:inputText label="STDCode"
                                             value="#{clientUitility.client.stdCode}" />
                                <h:outputText value="Phone No: "/>
                                <p:inputText label="PhoneNo"
                                             value="#{clientUitility.client.phoneNo}" />                                </p:panelGrid>
                        </p:panel>
                    </p:tab>

                    <p:tab id="confirm" title="Confirmation" >
                        <p:panel id="confirm1" header="Confirm and Submit">

                            <h:panelGrid  columns="6" styleClass="grid" >

                                <h:outputText value="First Name: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.firstName}" />
                                <h:outputText value="Middle Name: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.middleName}" />
                                <h:outputText value="Last Name: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.lastName}" />
                                <h:outputText value="Login ID: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.loginID}"/>
                                <h:outputText value="Password: " />
                                <h:outputText styleClass="outputLabel"
                                             value="#{clientUitility.client.password}"/>
                                <h:outputText/>
                                <h:outputText/>
                                <h:outputText value="Address: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.address1}" />
                                <h:outputText />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.address2}" />
                                <h:outputText />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.address3}" />
                                <h:outputText value="City: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.city}" />
                                <h:outputText value="State: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.state}" />
                                <h:outputText value="Pincode: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.pincode}" />
                                <h:outputText value="Email ID: " />
                                <h:outputText styleClass="outputLabel"
                                              value="#{clientUitility.client.emailID}" />
                                <p:commandButton id="addClient" immediate="true" value="Add Client" actionListener="#{clientUitility.save}" oncomplete="wiz.loadStep (wiz.cfg.steps [0], true)" update="@parent,:cm:clientList"> <!-- update="@parent,:cm:clientList" -->
                                </p:commandButton>
                            </h:panelGrid>
                        </p:panel>
                    </p:tab>
                </p:wizard>
                <ui:include id="ce" src="ClientEditDatatable.xhtml"/>
            </h:form>              
        </ui:define>
    </ui:composition> 
</h:body> 

ClientEditDatatable.xhtml

<h:body>
     <h:form id="fce">
        <p:confirmDialog message="Delete client?" severity="alert" widgetVar="confirmDeleteClient" visible="false" appendToBody="true">
            <p:commandButton value="Yes" update=":cm:fce:clientList" oncomplete="confirmDeleteClient.hide()" actionListener="#{clientUitility.deleteRecord}" > 
            </p:commandButton>
            <p:commandButton value="No" onclick="confirmDeleteClient.hide()" type="button" />
        </p:confirmDialog>
        <p:dataTable var="client" value="#{clientUitility.clientAll}" id="clientList" editable="true"
                     rowKey="#{client.clientID}" paginator="true" rows="10" rowsPerPageTemplate="10,15,20">
            <p:column headerText="First Name" style="width:125px" filterBy="#{user.firstname}" sortBy="#{client.firstName}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.firstName}" />
                    </f:facet>
                    <f:facet name="input">
                        <h:outputText value="#{client.firstName}" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Middle Name" style="width:125px" filterBy="#{client.middleName}" sortBy="#{client.middleName}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.middleName}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.middleName}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Last Name" style="width:125px" filterBy="#{client.lastName}" sortBy="#{client.lastName}" >
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.lastName}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.lastName}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Login ID" style="width:125px" filterBy="#{client.loginID}" sortBy="#{client.loginID}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.loginID}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.loginID}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column headerText="Password" style="width:125px" filterBy="#{client.password}" sortBy="#{client.password}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.password}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.password}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Address1" style="width:125px" filterBy="#{client.address1}" sortBy="#{client.address1}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.address1}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.address1}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Address2" style="width:125px" filterBy="#{client.address2}" sortBy="#{client.address2}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.address2}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.address2}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Address3" style="width:125px" filterBy="#{client.address3}" sortBy="#{client.address3}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.address3}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.address3}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="City" style="width:125px" filterBy="#{client.city}" sortBy="#{client.city}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.city}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.city}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="State" style="width:125px" filterBy="#{client.state}" sortBy="#{client.state}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.state}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.state}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Pincode" style="width:125px" filterBy="#{client.pincode}" sortBy="#{client.pincode}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.pincode}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.pincode}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Mobile No" style="width:125px" filterBy="#{client.mobileNo}" sortBy="#{client.mobileNo}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.mobileNo}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.mobileNo}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="STD Code" style="width:125px" filterBy="#{client.stdCode}" sortBy="#{client.stdCode}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.stdCode}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.stdCode}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Phone No" style="width:125px" filterBy="#{client.phoneNo}" sortBy="#{client.phoneNo}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.phoneNo}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.phoneNo}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Email ID" style="width:125px" filterBy="#{client.emailID}" sortBy="#{client.emailID}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{client.emailID}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{client.emailID}" style="width:100%" >
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Edit" style="width:50px">
                <p:rowEditor />
            </p:column>
            <p:ajax event="rowEdit" listener="#{clientUitility.editRowListner}" update=":cm:mymessage"/>

            <p:column headerText="Delete" style="width:50px">
                <p:commandButton id="deleteClient" value="Delete" onclick="confirmDeleteClient.show()" title="Delete this Client" styleClass="ui-icon-closethick">
                </p:commandButton>
            </p:column>
        </p:dataTable>
    </h:form> 
</h:body>

clientUtility.java

@ManagedBean
@ViewScoped
public class ClientUitility {
private ClientBean client = new ClientBean();
private List<ClientBean> clientAll = new ArrayList<ClientBean>();
/** Creates a new instance of ClientUitility */
public ClientUitility() {
    clientAll = new ArrayList<ClientBean>();
    int userID = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("USER_ID").toString());
    clientAll = ClientService.GenerateClientList(userID);
}
public List<ClientBean> getClientAll() {
    return clientAll;
}
public void setClientAll(List<ClientBean> clientAll) {
    this.clientAll = clientAll;
}
public ClientBean getClient() {
    return client;
}
public void setClient(ClientBean client) {
    this.client = client;
}
public String onFlowProcess(FlowEvent event) {
    System.out.println("Current wizard step:" + event.getOldStep());
    System.out.println("Next step:" + event.getNewStep());
    System.out.println("First name : " + client.getfirstName());
    System.out.println("Last name : " + client.getlastName());
    System.out.println("Age name : " + client.getloginID());
    return event.getNewStep();
}
public void editRowListner(RowEditEvent rowEditEvent) {
    try {
        ClientBean updatedClient = (ClientBean) rowEditEvent.getObject();
        System.out.println("Client First Name: " + updatedClient.getfirstName());
        ClientService.EditClient(updatedClient);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Updated", updatedClient.getfirstName() + " " + updatedClient.getlastName()));
    } catch (Exception e) {
        e.getMessage();
    }
}
public void deleteRecord(ActionEvent actionEvent) {
    try {
        //System.out.println("Client ID: " + actionEvent.getComponent().getAttributes().get("cID").toString());
        System.out.println("delete client of User ID: " + FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("USER_ID").toString());
        FacesMessage msg = new FacesMessage("Client Deleted", "");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void save(ActionEvent actionEvent) {        client.setuserID(Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("USER_ID").toString()));
    System.out.println("Client ID : " + client.getclientID());
    System.out.println("User ID : " + client.getuserID());
    ClientService.AddClient(client);
    client = new ClientBean();
    clientAll = ClientService.GenerateClientList(Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("USER_ID").toString()));
    FacesMessage msg = new FacesMessage("Client Created", "");
    FacesContext.getCurrentInstance().addMessage(null, msg);
}
}

Посоветуйте, где я ошибаюсь?


  • Как насчет публикации только соответствующих частей вашего кода? 01.06.2012
  • Я просто хочу знать, где я ошибаюсь. поэтому я обновил весь код. Нет, я немного отредактировал. 01.06.2012
  • Я пробовал с диалогом, но все же он не вызывает метод удаления записи bean-компонента 01.06.2012
  • Я понимаю, но если вы удалите 9 из 10 столбцов таблицы, проблема останется? Если да, исключите их из вопроса. А если убрать 3 из 4 вкладок? А если убрать 4 из 5 полей ввода? А если убрать все эти атрибуты style? И так далее. Старайтесь, чтобы код был как можно меньше, пока он все еще демонстрирует проблему. Ненужный/несвязанный код усложняет поиск реальной проблемы, в том числе и для вас самих! Вам также не нужно включать геттеры/сеттеры в код компонента, предполагая, что они всегда настоящие геттеры/сеттеры (и, следовательно, не делают ничего другого). 01.06.2012
  • Ваш deleteClient commandButton не имеет объявленного действия или actionListener. Кроме того, у меня возникли некоторые проблемы с использованием commandButton внутри Datatable, попробуйте использовать внутри него commandLink и setPropertyActionListener. 01.06.2012
  • @Flavio: он показывает диалоговое окно подтверждения (см. Вверху), в котором, в свою очередь, есть настоящая кнопка удаления. 01.06.2012

Ответы:


1

Вы не можете и не должны вкладывать формы.

В ClientMaster.xhtml замените

            <ui:include id="ce" src="ClientEditDatatable.xhtml"/>
        </h:form>              

by

        </h:form>              
        <ui:include id="ce" src="ClientEditDatatable.xhtml"/>

Смотрите также:

01.06.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..