I am getting error while trying a simple application with 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;
}
and my xhtml:
<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>
I tried to find answers from the other questions, but it didn't work. I want to try to delete the data in the table using the doDeleteStore method. I already made that method on bean. Can anyone help me? I really appreciate your help
I put the converter in here:
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;
}
}