본문 바로가기

Dev/Framework

사용자에게 서버 메시지 뿌리는 방법 중 하나

728x90
#. Class file source

public class SendEmailAction extends ActionSupport {
  ........

private String statusFlag = null;   // 결과 Flag
private String altMessage = null;             //사용자에게 보여줄 결과 메시지
@Override
public String execute() throws Exception {
try{
                            ........
}catch (Exception e) {
e.printStackTrace();
setStatusFlag(ERROR);
  setAltMessage(getText("mail.message.error"));
return  ERROR;
}
setStatusFlag(SUCCESS);
   //setAltMessage("메일이 성공적으로 전송되었습니다. 빠른 시일 내에 연락드리겠습니다.");
   setAltMessage(getText("mail.message.success"));
return  SUCCESS;
}
  ......
public String getStatusFlag() {
return statusFlag;
}
public void setStatusFlag(String statusFlag) {
this.statusFlag = statusFlag;
}
public String getAltMessage() {
return altMessage;
}
public void setAltMessage(String altMessage) {
this.altMessage = altMessage;
}
}


#. struts.xml
....
<action name="send.email" class="com.prompt.eclix.mail.SendEmailAction" method="execute">
<result>/WEB-INF/jsp/controller.jsp</result>
</action>
.....

#. /WEB-INF/jsp/controll.jsp
<script language="javascript">
var v_flag = 
                 '<%=request.getAttribute("statusFlag")==null?"":(String)request.getAttribute("statusFlag")%>';
var v_altMessage=
                 '<%=request.getAttribute("altMessage")==null?"":(String)request.getAttribute("altMessage")%>';

if(v_flag == 'error'){
alert(v_altMessage);
location.href="/open.email.action";
}else if( v_flag == 'success'){
alert(v_altMessage);
location.href="/main.action";
}else{
}
</script>


이렇게 하면 결과 페이지에서 서버에서 세팅 해준 메시지를 띄울 수 있다.

메세지를 띄우는 것에 대한 내용은 여기까지이고, 페이지를 로드하는 방식이 Struts 2 를 사용하는 걸 무색하게 한다.
그것에 대한 내용은 "[Struts 2] Token Interceptor 안 쓰고 페이지 분기" 게시글에서.