此类为action的继承的类,其中主要以下几个方法:
1)execute
2)addErrors
3)addMessages
4)saveErrors
5)saveMessages
其中excute方法为
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return null;
}
是真正要调用执行的方法,因此在继承后要重写此方法,action类中的execute什么都没做,只是返回了一个null
如果我们在继承的action类中,不重写此方法,那么我们自己的action将什么也不做。很显然struts是通知这个方法
作为入口来执行我的action部门,包括把参数传入逻辑类(javabean)和进行转向等操作。
addErrors和saveErrors已被addMessages和saveMessages取代,
而addMessages和saveMessages的作用就是把一些信息返回给前台,用于<html:messages显示用的。
-----------------------------------------------------------------------------------------------
protected void addMessages(HttpServletRequest request,
ActionMessages messages) {
if (messages == null) {
// bad programmer! *slap*
return;
}
// get any existing messages from the request, or make a new one
ActionMessages requestMessages =
(ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
//Globals.MESSAGE_KEY为org.apache.struts.action.ACTION_MESSAGE
if (requestMessages == null) {
requestMessages = new ActionMessages();
}
// add incoming messages
requestMessages.add(messages);
// if still empty, just wipe it out from the request
if (requestMessages.isEmpty()) {
request.removeAttribute(Globals.MESSAGE_KEY);
return;
}
// Save the messages
request.setAttribute(Globals.MESSAGE_KEY, requestMessages);
}
注:addMessages的主要作用,就是把定义的ActionMessages加入到request中去。同时如果request中原来有的话,将会合并远来的ActionMessages
然后再保存在request中。
而saveMessages不同,他会在保存前把原来相同的名称ActionMessages进行清除,然后保存自己,因此可以确定saveMessages永远
只保存最后一个ActionMessages到request中。
--------------------------------------------------------------------------------------------------------
protected void saveMessages(HttpServletRequest request,
ActionMessages messages) {
// Remove any messages attribute if none are required
if ((messages == null) || messages.isEmpty()) {
request.removeAttribute(Globals.MESSAGE_KEY);
return;
}
// Save the messages we need
request.setAttribute(Globals.MESSAGE_KEY, messages);
}
说明:saveMessages有两个名称相同,但参数不同的方法。有一个是把ActionMessages保存在request中,有一个保存在session中。
1)execute
2)addErrors
3)addMessages
4)saveErrors
5)saveMessages
其中excute方法为
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return null;
}
是真正要调用执行的方法,因此在继承后要重写此方法,action类中的execute什么都没做,只是返回了一个null
如果我们在继承的action类中,不重写此方法,那么我们自己的action将什么也不做。很显然struts是通知这个方法
作为入口来执行我的action部门,包括把参数传入逻辑类(javabean)和进行转向等操作。
addErrors和saveErrors已被addMessages和saveMessages取代,
而addMessages和saveMessages的作用就是把一些信息返回给前台,用于<html:messages显示用的。
-----------------------------------------------------------------------------------------------
protected void addMessages(HttpServletRequest request,
ActionMessages messages) {
if (messages == null) {
// bad programmer! *slap*
return;
}
// get any existing messages from the request, or make a new one
ActionMessages requestMessages =
(ActionMessages) request.getAttribute(Globals.MESSAGE_KEY);
//Globals.MESSAGE_KEY为org.apache.struts.action.ACTION_MESSAGE
if (requestMessages == null) {
requestMessages = new ActionMessages();
}
// add incoming messages
requestMessages.add(messages);
// if still empty, just wipe it out from the request
if (requestMessages.isEmpty()) {
request.removeAttribute(Globals.MESSAGE_KEY);
return;
}
// Save the messages
request.setAttribute(Globals.MESSAGE_KEY, requestMessages);
}
注:addMessages的主要作用,就是把定义的ActionMessages加入到request中去。同时如果request中原来有的话,将会合并远来的ActionMessages
然后再保存在request中。
而saveMessages不同,他会在保存前把原来相同的名称ActionMessages进行清除,然后保存自己,因此可以确定saveMessages永远
只保存最后一个ActionMessages到request中。
--------------------------------------------------------------------------------------------------------
protected void saveMessages(HttpServletRequest request,
ActionMessages messages) {
// Remove any messages attribute if none are required
if ((messages == null) || messages.isEmpty()) {
request.removeAttribute(Globals.MESSAGE_KEY);
return;
}
// Save the messages we need
request.setAttribute(Globals.MESSAGE_KEY, messages);
}
说明:saveMessages有两个名称相同,但参数不同的方法。有一个是把ActionMessages保存在request中,有一个保存在session中。