The Action Class
The Action
class is
an adapter between servlet requests and your business logic. In other
words, it is appropriate for your Action
class to handle issues such as
gathering data from the user interface, controlling flow through the
application, and shaping the data for presentation. But it is
inappropriate for the Action
class
itself to handle business functions. For example, if your Action
class is updating a database itself,
you have probably inappropriately put business functions into the web
tier.
You will need to extend org.apache.struts.action.Action
for each
Action
you want to define. The most
important method to override is execute()
. This example is from AdminBooksAction
:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { AdminBooksActionForm adminBooksForm = (AdminBooksActionForm) form; Map books = getLibrary().getBooks(); // First set all books to checked in List bookList = getLibrary().getBookList(); Iterator i = bookList.iterator(); while (i.hasNext()) { Book book = (Book) i.next(); if (book != null) { book.setCheckedOut(false); } } // Now based on the checks in the form, set checked books // to "checked out" String[] picks = adminBooksForm.getPicks(); if (picks != null) { for (int j = 0; j < picks.length; j++) { ((Book) books.get(picks[j])).setCheckedOut(true); } } return mapping.findForward("adminbooks"); }
This Action
handles the form
submission from /view/adminbooks.jsp ...
Get Java Enterprise in a Nutshell, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.