Action.java

此类为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中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值