0

I'm a jsf newbie with a seemingly simple jsf problem. I worked on this for hours without luck. Here is the exception from console, followed by the code (thank you in advance):

04-Apr-2018 17:19:31.368 SEVERE [http-nio-8080-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Faces Servlet] in context with path [/crm1] threw exception [javax.el.PropertyNotWritableException: /Reclamation.xhtml @17,115 value="#{CliBean.clientSelect}": Property [clientSelect] not writable on type [com.crm1.presentation.ClientBean]] with root cause
 javax.el.PropertyNotWritableException: Property [clientSelect] not writable on type [com.crm1.presentation.ClientBean]

My bean definitions:

@ManagedBean(name="CliBean")
@RequestScoped
public class ClientBean {

   public Client selectedClient;
   private List<SelectItem> clientSelect;

   ClientDAO dao = new ClientDAOImpl();
   public Client cli = new Client();



    private String logcli;



    public Client getCli() {
        return cli;
    }

    public void setCli(Client cli) {
        this.cli = cli;
    }

    public Client getSelectedClient() {
        return selectedClient;
    }

    public void setSelectedClient(Client selectedClient) {
        this.selectedClient = selectedClient;
    }



    /*public List<Client> lister(){
        return dao.findAll();
    }*/


    public String LoginCheck(){

     Session ses = HibernateUtil.getSession();
     SessionFactory fac = HibernateUtil.getSessionFactory();
     ses.getTransaction();


             List<Client> list = ses.createSQLQuery("select * from client where login_cli='" + cli.getLoginCli() + "' and pwd_cli='" + cli.getPwdCli() + "'").list();
             if (list.size() > 0) {
                 //servlet session part

                 logcli = cli.getLoginCli();

                 HttpSession hs = sessionUtil.getSession();
                 hs.setAttribute("logcli",logcli);
                 //servlet session part
                 //BootFaces
                 FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Congratulations! You've successfully logged in.");
                 FacesContext.getCurrentInstance().addMessage("loginForm:password", msg);
                 //BootFaces

            return "/success.xhtml?faces-redirect=true";
        } else {
                //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "client not found", ""));

                //BootFaces
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "client not found !");
                FacesContext.getCurrentInstance().addMessage("loginForm:password", msg);
                //BootFaces

               }
        try {
            ses.getTransaction().commit();
        } catch (Exception e) {
        }
        ses.close();
        return null;
        }
    public String afflogin(){
        return logcli;
         }

    public String doLogout(){
        HttpSession hs = sessionUtil.getSession();
        hs.invalidate();
        return "/index.xhtml";
         }


        public List<SelectItem> getClientSelect() {
            if (clientSelect == null){

                clientSelect = new ArrayList<SelectItem>();

                ClientServicesImpl clientServicesImpl = new ClientServicesImpl();
                List<Client> listClients = clientServicesImpl.findAll();
                if(listClients != null && !listClients.isEmpty()){
                    SelectItem item;
                    for (Client clientlist : listClients) {
                        item = new SelectItem(clientlist , clientlist.getNomCli());
                        clientSelect.add(item);

                    }

                }

            }
        return clientSelect;
    }


                        }

The JSF Code:

            <h:selectOneMenu id="client" value="#{CliBean.clientSelect}" converter="#{clientConverter}"  >
                <f:selectItems value="#{CliBean.clientSelect}"  itemValue="#{CliBean.cli.idCli}"/>
            </h:selectOneMenu>

selectedClient has public getter & setter Can anyone tell me where I'm going wrong? Feel free to explain if you wish, as I'm not a jsf person, per se. Thank you.

0 Answers0