struts-config.xml로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

struts-config.xml로 검색한 결과
등록일:2008-03-15 20:33:11
작성자:
제목:jsp에서 에러메세지 내보내기...




알고보면  의외로  쉽당...쿄쿄쿄...

  

<message-resources  parameter="MessageResources"/>

메세지의  자료의  파라미터는  다음  경로("MessageResources")와  같다는  이야기다..

struts-config.xml에  한줄  추가해주자....

  

그  파라미터에  있는  경로를  찾아가보자..  src밑에의  디렉토리  주소부터  따져보면  되겠다..

위에  설정은  소스디렉토리  바로밑에  있는  경우겠다...

가보면  소스디렉토리  바로밑에  MessageResources.properties가  있다....

여기에  자기가  쓰고  싶은  메시지를  적어주면  되겠다...

error.invalidPassword=password가  잘못되었어요..
error.invalidLogin=login정보가  왜  이따구예요..
error.invalidUsername=아이디는  이게  몸니까...

따옴표는  붙여도  되고  안붙여도  된다.

  

이렇게  설정되어  있는  에러메세지를  jsp로  내보낼려면,  action이나  form의  validate()등에서  생성을  하여  jsp로  리턴해주면  된다...

  

action에서

public  class  Login2Action  extends  Action{
  
  public  ActionForward  execute(ActionMapping  mapping,ActionForm  form,
      HttpServletRequest  request,HttpServletResponse  response)  throws  Exception{
    LogInProcess  logInProcess=LogInProcess.getInstance();
    
    Login2Form  login2Form=(Login2Form)form;
    
    String  userName=login2Form.getUsername();
    String  password=login2Form.getPassword();
    
    UserInfoBean  userInfo=logInProcess.logIn(userName,password);
    
    ActionForward  forward=null;
    
    if(userInfo==null){      //아이디가  없으면....
      ActionMessages  messages=new  ActionMessages();
      
      messages.add(ActionMessages.GLOBAL_MESSAGE,new  ActionMessage(
          "error.invalidLogin"));              //에러프로퍼티에  있는것을  불러올때...
      
      saveMessages(request,messages);    //메세지를  리퀘스트에  담아서..
      
      return  mapping.getInputForward();      //에러메세지만  리턴하면서  액션을  마친다.
    }
    
    HttpSession  session=request.getSession();
    session.setAttribute("userInfo",userInfo);
    
  forward=mapping.findForward("login2Form");
  
  return  forward;
  }

}

form에서

package  forms;

import  javax.servlet.http.HttpServletRequest;

import  org.apache.struts.action.ActionErrors;
import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.action.ActionMessage;

public  class  Login2Form  extends  ActionForm{
  
  private  String  username=null;
  private  String  password=null;
  public  String  getPassword()  {
    return  password;
  }
  public  void  setPassword(String  password)  {
    this.password  =  password;
  }
  public  String  getUsername()  {
    return  username;
  }
  public  void  setUsername(String  username)  {
    this.username  =  username;
  }
  
  public  ActionErrors  validate(ActionMapping  mapping,    //유효성  검사.  validate="true"로  할때
      HttpServletRequest  request){                                                                    //검사할수  있다.
    ActionErrors  errors=new  ActionErrors();

    if(username==null||username.length()==0){
      errors.add("invalidUsernameError",
          new  ActionMessage("error.invalidUsername","使用者の名前を入力してください。"));
          
    }else  if(username.indexOf("")>=0||username.indexOf("\t")>=0||
        username.indexOf("\n")>=0){
      errors.add("invalidUsernameError",
          new  ActionMessage("error.invalidUsername","使用者名は。。。。"));
    }
    
    if(password==null||password.length()==0){
      errors.add("invalidPasswordError",new  ActionMessage("error.invalidPassword"));
    }
    return  errors;
  }

}

  

위와  같은  식으로  에러메세지를  리턴해  줄  수  있다.  그러면  jsp에서는

        <html:messages  id="msg"  property="invalidUsernameError">
              <b><bean:write  name="msg"/></b>
        </html:messages>

와  같은  식으로  불러다  쓸수  있다.  홍홍홍..  좋다..  중요한  것은  만약  에러메세지가  없으면  출력이  안된다는  것..당연한  건가???  하지만,

      1.        errors.add("invalidUsernameError",
                    new  ActionMessage("error.invalidUsername","使用者名は。。。。"));

      2.        messages.add(ActionMessages.GLOBAL_MESSAGE,new  ActionMessage(
                    "error.invalidLogin"));  

invalidUsernameError부분은  메세지파일의  변수와  반드시  일치해야하고....

error.invalidLogin부분은  jsp의  property부분과  반드시  일치해야  한다...

안그럼  에러나니까..

  

그리고  위에  메세지의  반환을  할때  반환형은  ActionError와  ActionMessages가  있다.  하지만  ActionErrors를  사용하면  스트러츠  버젼업에  문제가  생길수도  있다한다.  사실  이점에  대해는  잘  모르겠다.  하여간  ActionMessages를  되도록  사용하자.

[출처]  [본문스크랩]  jsp에서  에러메세지  내보내기...|작성자  어린양이
http://blog.naver.com/dlckdeo81?Redirect=Log&logNo=41775934