|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
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 |
|
|
|
|
|