2013-07-22 8 views
0

를 작동하지 않는 경우 그 유효하지 않은 사용자는 유효하지 않은 사용자는 로그인 할려고하면 내가 1Struts2 태그 내가 로그인 페이지를 쓰고 있어요

private String username; 
private String password; 
private int error; 
@Override 
public String execute() 
{ 
    //validate user input 
    if (username == null || password == null || username.isEmpty() || password.isEmpty()) 
    { 
     error = 2; 
     return LOGIN; 
    } 

    LoginModel loginModel = new LoginModel(username, password); 

    HttpBuilder<LoginModel, User> builder = new HttpBuilder<LoginModel, User>(User.class); 
    builder.setPath("service/user/authenticate"); 
    builder.setModel(loginModel); 

    IHttpRequest<LoginModel, User> request = builder.buildHttpPost(); 
    User user = request.execute(URL.BASE_LOCAL); 

    //redirects to login page 
    if (user == null) 
    { 
     error = 1; 
     return LOGIN; 
    } 
    else 
    { 
     return SUCCESS; 
    } 
} 

    //Getters/Setters 

에 동일한 오류 매개 변수를 사용하여 로그인 조치로 리디렉션 로그인을 시도 할 때 localhost : 8080/app/login.action? error = 1로 리디렉션됩니다. if 태그를 사용하여 오류 매개 변수에 액세스하여 사용자에게 오류 메시지를 표시하려고하지만 메시지가 작동하지 않는 것이 표시되지 않습니다.

<s:if test="error == 1"> 
<center> 
    <h4 style="color:red">Username or Password is invalid!!</h4> 
</center> 

내가 뭘 잘못하고 있니?

+0

'struts.xml' 파일을 보여주세요. –

답변

0

값 스택에서 액세스하려면 게터setter 필드 'error'를 제공해야합니다.

public int getError() 
{ 
    return error; 
} 

public void setError(int error) 
{ 
    this.error = error; 
} 

그리고 것은 OGNL에 액세스하려고 :

<s:if test="%{#error==1}"></s:if> 

또는 사용 JSTL :

<c:if test="${error==1}"></c:if> 
+0

나는이 방법을 사용한다. –

2

를 지금까지 내가 완전히 무시되어 당신이 잘못하고있어 걱정으로 뼈대.

은 대략, IMO이 더 같이한다 : 당신은 양식을 포함하는 "input" 결과를 가지고 있고, 당신이 원하는 어떤 스타일을 사용하여 현재 조치의 오류를 표시 할

public class LoginAction extends ActionSupport { 

    private String username; 
    private String password; 

    @Override 
    public String validate() { 
     if (isBlank(username) || isBlank(password)) { 
      addActionError("Username or Password is invalid"); 
     } 

     User user = loginUser(username, password); 
     if (user == null) { 
      addActionError("Invalid login"); 
     } 
    } 

    public User loginUser(String username, String password) { 
     LoginModel loginModel = new LoginModel(username, password); 

     HttpBuilder<LoginModel, User> builder = new HttpBuilder<LoginModel, User>(User.class); 
     builder.setPath("service/user/authenticate"); 
     builder.setModel(loginModel); 

     IHttpRequest<LoginModel, User> request = builder.buildHttpPost(); 
     return request.execute(URL.BASE_LOCAL); 
    } 

} 

. 그것이 중요한라면 로그인 오류의 유형에 따라 스타일을 변경해야합니다. 게임을 몇 개 더해야하지만 과도한 것으로 보입니다.

관련없는,하지만 난 움직일 것 loginUser 코드 작업 중 및 유틸리티/서비스 클래스에 완전히하지만, 적어도 더 쉽게 모방 할 수는 별도의 방법에 싸서과 그. 확실히 이 아닌execute 메서드에 속합니다.

+0

redirectAction 결과 유형을 해당 작업의 JSP 페이지에 사용할 때 오류 메시지가 표시 될 수 있습니까? –

+1

번호 작업 및 필드 오류는 요청 당입니다. –

+0

로그인 페이지를 다시 표시하도록 리디렉션하는 이유는 무엇입니까? 이미 로그인 페이지에 있지 않습니까? –

관련 문제