ActionErrors e ActionMessages funzionano praticamente allo stesso modo.
infatti ActionErrors estende ActionMessages, ma non va in override su nessun metodo, anzi utilizza i metodi della super classe.
In ogni caso, quando fai un add, il messaggio che aggiungi, viene messo in una lista, e puttata in una mappa (messages) associata alla chiave ActionMessages.GLOBAL_MESSAGE ovvero (org.apache.struts.action.GLOBAL_MESSAGE).
detto questo, penso, ma non ne sono sicuro quando fai un <html:errors />
sicuramente il tag va a leggere la mappa messages, e di default utilizza come chiave:
ActionMessages.GLOBAL_MESSAGE ovvero (org.apache.struts.action.GLOBAL_MESSAGE)
Per quanto riguarda il messaggio che vuoi stampare a video, quando fai:
new ActionMessage("errors.required"), quello che passi al costruttore e' la chiave che avrai precedentemente inserito in un bundle, se hai piu' di un bundle, puoi recuperare il messaggio dallo specifico bundle utilizzando:
<html:errors bundle="tuo_resource" />
spero di aver risolto ogni tuo dubbio.
![]()