javax.el.MethodNotFoundException: метод не найден: JSF с простыми гранями - PullRequest
0 голосов
/ 08 апреля 2020

Я получаю сообщение об ошибке при попытке выполнить простое приложение с JSF.

20:20:23,679 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost-127.0.0.1-8081-6) #{listAnalysisTokoBean.doDeleteStore(pilihToko)}: javax.el.MethodNotFoundException: /pma/analysis-toko.xhtml @181,31 action="#{listAnalysisTokoBean.doDeleteStore(pilihToko)}": Method not found: com.agri.analysistoko.bean.ListAnalysisTokoBean@36f99286.doDeleteStore(java.lang.String): javax.faces.FacesException: #{listAnalysisTokoBean.doDeleteStore(pilihToko)}: javax.el.MethodNotFoundException: /pma/analysis-toko.xhtml @181,31 action="#{listAnalysisTokoBean.doDeleteStore(pilihToko)}": Method not found: com.agri.analysistoko.bean.ListAnalysisTokoBean@36f99286.doDeleteStore(java.lang.String)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIData.broadcast(UIData.java:1093) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:67) [log4j-web-2.0.2.jar:2.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]

My Managed Bean:

private static final long serialVersionUID = 1L;
private static final Logger LOGGER = Logger.getLogger(ListAnalysisTokoBean.class);

private List<Product> product = null;
private List<Store> store = null;

private Product fieldData = new Product();
private List<Product> selectedProduct;

private List<Store> selectedStore;
private Store stores;


FacesContext context = FacesContext.getCurrentInstance();

HttpSession session = (HttpSession) context.getExternalContext().getSession(true);

@PostConstruct
public void init(){
    product = new ArrayList<Product>();
    store = new ArrayList<Store>();

    readProductNames();
    readStoreNames();
}

public List<Product> readProductNames(){
    product = new ArrayList<Product>();

    try{
        product = DaoFactory.getProductDao().readProductName();
    } catch(SQLException e){
        AppBean.addErrorMsg("Cannot execute db" + e);
        LOGGER.error("Failed to execute db : " + e.getCause());
    }

    return product;
}

public List<Store> readStoreNames(){
    store = new ArrayList<Store>();

    try{
        store = DaoFactory.getStoreDao().readStoreName();
    } catch(SQLException e){
        AppBean.addErrorMsg("Cannot execute db" + e);
        LOGGER.error("Failed to execute db : " + e.getCause());
    }

    return store;
}

public void doDeleteStore(Store stores){
    selectedStore.remove(stores);
    stores = null;
}

/*=========================getter and setter====================================*/

public List<Product> getProduct() {
    return product;
}

public void setProduct(List<Product> product) {
    this.product = product;
}

public Product getFieldData() {
    return fieldData;
}

public void setFieldData(Product fieldData) {
    this.fieldData = fieldData;
}

public List<Product> getSelectedProduct() {
    return selectedProduct;
}

public void setSelectedProduct(List<Product> selectedProduct) {
    this.selectedProduct = selectedProduct;
}

public List<Store> getStore() {
    return store;
}

public void setStore(List<Store> store) {
    this.store = store;
}

public List<Store> getSelectedStore() {
    return selectedStore;
}

public void setSelectedStore(List<Store> selectedStore) {
    this.selectedStore = selectedStore;
}

public Store getStores() {
    return stores;
}

public void setStores(Store stores) {
    this.stores = stores;
}

и мой x html:

<h:form id="fieldInputData">
    <p:tabView style="background-color: #efebe9;">
        <p:tab title="Toko">
            <f:facet name="title">
                <p:graphicImage name="toko.png" library="images" width="25px"
                    height="25px" />
                <h:outputText value="Toko" style="margin-left:5px;" />
            </f:facet>
            <div class="row">
                <div class="col s2">
                    <p:outputLabel value="Toko :" style="color: black;" for="tokosaja" />
                    <p:selectManyMenu id="tokosaja" var="t" filter="true"
                        style="width: 200px;" scrollHeight="200"
                        filterMatchMode="contains" showCheckbox="true"
                        value="#{listAnalysisTokoBean.selectedStore}">
                        <f:selectItems value="#{listAnalysisTokoBean.readStoreNames()}"
                            var="storeNames" itemLabel="#{storeNames.store_name}"
                            itemValue="#{storeNames}" />
                        <p:column>
                            <h:outputText value="#{t.store_name}" />
                        </p:column>
                    </p:selectManyMenu>
                </div>

                <div class="col s1">
                    <p:commandButton value="Add" id="btnAddToko"
                        style="margin-top: 30px; margin-left:60px;
                        background-color: #26a69a;" update="tableToko"/>
                </div>
            </div>
            <div class="row">
                <h6 style="color: black;">Data Yang Dipilih :</h6>
                <div class="col s6">
                    <div class="row">

                            <p:dataTable var="pilihToko" rows="5"
                                value="#{listAnalysisTokoBean.selectedStore}" 
                                style="width: 100%; float: left; margin-top: 0px;"
                                paginator="true" pageLinks="5" rowsPerPageTemplate="5,10,15"
                                widgetVar="widgetWorkOrder" rowIndexVar="rowIndex"
                                paginatorPosition="bottom" emptyMessage="No record found"
                                styleClass="no-dtbl-header" id="tableToko" 
                                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                                <p:columnGroup type="header">
                                    <p:column headerText="Toko" />
                                </p:columnGroup>
                                <p:column>
                                    <h:outputText value="#{pilihToko}"/>
                                    <p:commandLink style="float:right" process="@this" action="#{listAnalysisTokoBean.doDeleteStore(pilihToko)}"
                                        update="tableToko">
                                        <p:graphicImage name="delete.png" library="images"
                                            width="25px" height="25px" />
                                    </p:commandLink>
                                </p:column>
                            </p:dataTable>

                    </div>
                </div>
            </div>
        </p:tab>
    </p:tabView>
</h:form>

Я пытался найти ответы на другие вопросы, но это не сработало. Я хочу попытаться удалить данные в таблице, используя метод doDeleteStore. Я уже сделал этот метод на боб. Может кто-нибудь мне помочь? Я очень ценю вашу помощь

Я поставил здесь конвертер:

public class Store implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id_store;
private String store_name;
private Integer id_branch_fk;

public Store(){}

public Store(Integer id_store, String store_name, Integer id_branch_fk){
    this.id_store = id_store;
    this.store_name = store_name;
    this.id_branch_fk = id_branch_fk;
}
public Integer getId_store() {
    return id_store;
}
public void setId_store(Integer id_store) {
    this.id_store = id_store;
}
public String getStore_name() {
    return store_name;
}
public void setStore_name(String store_name) {
    this.store_name = store_name;
}
public Integer getId_branch_fk() {
    return id_branch_fk;
}
public void setId_branch_fk(Integer id_branch_fk) {
    this.id_branch_fk = id_branch_fk;
}

@Override
public String toString(){
    return store_name;
}

}

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