I am new to jsf and trying to build app. Problem is when i click Login commandButton nothing happens. So i input some print lines and it show's me that connection with database exist and arguments are valid but it wont redirect.
Here is index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Dezurstvo</title>
</h:head>
<h:body>
Login
<br />
<h:form>
<p:growl id="msgs" showDetail="true"/>
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Username"/>
<p:inputText value="#{logIn.username}" required="true"/>
<h:outputText value="Password"/>
<p:password id="pass" value="#{logIn.password}" feedback="false" required="true"/>
</h:panelGrid>
<p:commandButton value="Login" action="#{logIn.loadUser()}" update="msgs" />
<p:commandButton value="Regisracija" />
</h:form>
<h:link outcome="adminMain" value="Primefaces welcome page" />
</h:body>
</html>
NavigationBean class
package beans;
import dataBeans.Korisnik;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
@ManagedBean(name = "navigation")
@RequestScoped
class NavigationBean {
public String getHomepage(){
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
Korisnik kor = (Korisnik)session.getAttribute("username");
if(!"A".equals(kor.getStatus()) || !"D".equals(kor.getStatus()) || !"N".equals(kor.getStatus()))
return "index";
else if("A".equals(kor.getStatus()))
return "adminMain";
else if("D".equals(kor.getStatus()))
return "demonstratorMain";
else if("N".equals(kor.getStatus()))
return "nastavnikMain";
return "";
}
public static String redirect(String status){
if(!"A".equals(status) || !"D".equals(status) || !"N".equals(status))
return "index";
else if("A".equals(status))
return "adminMain";
else if("D".equals(status))
return "demonstratorMain";
else if("N".equals(status))
return "nastavnikMain";
return "error";
}
}
Login Bean
package beans;
import dataBeans.Korisnik;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;
@ManagedBean(name="logIn")
@RequestScoped
public class LoginBean {
private String user;
private String pass;
private UIComponent component;
public UIComponent getComponent() {
return component;
}
public void setComponent(UIComponent component) {
this.component = component;
}
public LoginBean() {}
/**
* @return the user
*/
public String getUsername() {
return user;
}
/**
* @param username the user to set
*/
public void setUsername(String username) {
this.user = username;
}
/**
* @return the pass
*/
public String getPassword() {
return pass;
}
/**
* @param password the pass to set
*/
public void setPassword(String password) {
this.pass = password;
}
//Loading user into session
public String loadUser() {
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
FacesMessage msg;
Korisnik kor = Korisnik.getUser(user);
if (user.equals(kor.getUsername())) {
System.out.println( "user je = " + kor.getUsername());
//User exists in database
if (pass.equals(kor.getPassword())) {
System.out.println( "Sifra je = " + kor.getPassword());
System.out.println( "Status = " + kor.getStatus());
//Pasword is OK
session.setAttribute(user, kor);
return NavigationBean.redirect(kor.getStatus());
} else {
//Wrong pass
// System.out.println( "Sifra je = " + kor.getPassword());
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "Pogrešna šifra.");
return msg.toString();
}
} else {
//Wrog user
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "Korisnik sa datim korisničkim imenom ne postoji.");
return msg.toString();
}
}
public String signOut(){
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
session.invalidate();
return "logIn";
}
}
faces config
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>adminMain</from-outcome>
<to-view-id>admin/adminMain.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>demonstratorMain</from-outcome>
<to-view-id>demonstrator/demonstratorMain.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>nastavnikMain</from-outcome>
<to-view-id>nastavnik/nastavnikMain.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>error.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
and web
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
when button is click it call function loadUser from LoginBean and he call redirect from NavigationBean and there should redirect me to specific page depending on status of user, but nothing happens. Also when i input wrong data it show me
Warning: JSF1091: No mime type could be found for file /javax.faces.application.FacesMessage@67cc4160. To resolve this, add a mime-type mapping to the applications web.xml.
Warning: JSF1064: Unable to find or serve resource, /javax.faces.application.FacesMessage@67cc4160.
don't know is this somehow connected to this.
I'm using glassfish server 4.1, primefaces 5.0, wamp, netbeans 8.0.2, jsf 2.2
Here is tree view if needed