压入栈顶,支持表单回显是什么意思?

public String alermStation() {

    // 1.查询数据库运行监控表的数据,返回唯一ElecCommonMsg
    ElecCommonMsg elecCommonMsg = elecCommonMsgService.findElecCommonMsg();
    // 2.将ElecCommonMsg对象压入栈顶,支持表单回显
    ValueUtils.putValueStack(elecCommonMsg);

    return "alermStation";
}

    public class ValueUtils {
/**
 * 将对象压入栈顶
 * @param obj
 */
public static void putValueStack(Object obj){
    ServletActionContext.getContext().getValueStack().push(obj);
}
}

    我在Action的一个方法代码中,有一部分不明白,`ValueUtils.putValueStack(elecCommonMsg);` 这句说的是将java bean压入栈顶,支持表单回显,那么这个是保存在哪儿的?而且为何一定要放在栈顶,而不使用key-value保存呢?

压入栈顶的意思是把数据放在值栈中,然后如果在jsp页面使用的是struts标签,它会自动从栈顶中取出数据,也就是回显。你也可以数据放在contextMap中
,并不是一定要把数据放在栈顶中

Struts有值栈的概念, 在栈顶的对象用Struts标签是可以直接访问其属性的
(类似于 Struts标签已经拿到了对象的引用,所以你只要写属性,Struts就能确定值了)。把对象放入栈顶仅仅是为了在页面回显数据方便。
如果该对象不是在栈顶, 那就只能老老实实的先拿到对象的引用在通过引用取属性的值了。