2013-06-04 142 views
0

我正在使用JSF 2.这是我的控制器。从控制器获取验证消息

package com.acc.validations; 

import java.io.Serializable; 
import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
@ManagedBean(name="user") 
@SessionScoped 
public class Controller implements Serializable{ 

private static final long serialVersionUID = 1L; 
String name; 
String password; 

public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 

private String checkUser(String name,String password) { 

    if(("admin".equalsIgnoreCase(name)) && ("admin".equalsIgnoreCase(password))){ 
     return "result"; 
    }else{ 
     /*System.out.println("Enter Valid details");*/ 
     FacesMessage msg = new FacesMessage("Authentication Failed.","Authentication Failed"); 
     msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
     return null; 
    } 
} 
public void execute(){ 
    checkUser(name, password); 
} 

}

这是我的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://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" > 
<h:body> 

<h1>Custom validator in JSF 2.0</h1> 

    <h:form > 

    <h:panelGrid columns="3"> 

    User Name: 

     <h:inputText id="username" value="#{user.name}" 
     required="true" > 
     <f:validateLength minimum="4" maximum="15" /> 
     </h:inputText> 

     <h:message for="username" style="color:red" /> 
    Password : 
     <h:inputSecret id="password" value="#{user.password}" 
     required="true" > 
     <f:validator validatorId="com.acc.validations.PasswordValidator" /> 
     </h:inputSecret> 
    </h:panelGrid> 

    <h:commandButton value="Submit" action="#{user.execute}" /> 


     </h:form> 

    </h:body> 
</html> 

我的要求是,如果用户输入用户名和密码为“admin”的控制应该重定向到result.xhtml否则它应该在我写在控制器上FacesContext中显示的信息。 这是我result.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://java.sun.com/jsf/html"> 
<h:body> 
<h1>Custom validator in JSF 2.0</h1> 
    <h:panelGrid columns="2"> 
    Welcome to User : 
    <h:outputText value="#{user.name}" /> 
    </h:panelGrid> 
</h:body> 
</html> 

我不能eventhough呈现result.xhtml我输入admin作为用户名和密码,还我没有得到任何消息,而我也进入错误credentials.And我我没有得到任何错误。请您在这方面帮助我,以便按照我的要求工作。

+0

代码。代码在哪里? – kolossus

回答

0

您是否尝试过这样的事情: 在你.xhtml

<p:inputText id="j_username" required="true" value="#{login.nomLogin}" /> 

在您的“控制器”

@ManagedBean(name="login") 
@SessionScoped 

public class LoginBean implements Serializable { 


     private String nomLogin; 
     private Boolean isConnected = false; 
     //Getter and Setter for this one 

public String checkValidUser(){ 
//To see the value of login 
System.out.println("Login a pour valeur :"+ getNomLogin()); 
if((getNomLogin().equals("admin")== true){ 
isConnected =true; 
return "ok"; 
}}} 

这是怎么我的登录作品,你可以做同样的事情用布尔值取决于你所需要的。

我想你可以测试值,如果你有类似的东西: 你有可能测试这个勇气,例如,如果有人连接我的菜单隐藏和显示,如果管理员连接:

<p:panel id="HidePanel" header="Menu caché" rendered="#{login.isConnected == 'true'}" /> 
+0

嗨我得到值的控制器我必须显示验证消息,如果我已经提到上述条件是true或false.How我可以从控制器得到消息 – Padmini

+0

Plop,我编辑我的答案与测试控制器的例子值。你能用一些代码例子编辑你的第一条消息,看看你正在试图做什么,请^ _ ^ – Freest