You might want to look at http://www.michaelmcgrady.com/button/jsp/dispatch_util.jsp.
This would mean, for example, that you could do what you want with the following code, requiring nothing else: JSP CODE (changes property="submit" for example, to property="edit.dispatch") <html:form action="/authors-list"> <html:submit property="edit.dispatch"> <bean:message key="authors-form.button.edit"/> </html:submit> <html:submit property="remove.dispatch"> <bean:message key="authors-form.button.remove"/> </html:submit> <html:hidden property="id" name="author"/> </html:form> ACTION CODE (you code the actions, e.g. edit(...) and remove( ...) in your action as before) ActionForward forward = null; try { forward = new DispatchUtil().dispatch(this,mapping,form,request,response); } catch (Exception e) { } return forward; LookupDispatchAction is pretty complicated, and perhaps unnecessarily so: http://www.michaelmcgrady.com/button/jsp/button_talk.jsp . Jack On Tue, 07 Dec 2004 12:02:52 +0100, Alexander Czernay <[EMAIL PROTECTED]> wrote: > I have a strange problem with LookupDispatchAction: > I built a form displaying several entries from a db as a list. There are > several buttons for editing/removing the entries an also two buttons for > paging though the list. The problem is, that only one of those buttons > works, while the other throws a MissingResourceAction. That sounds like > a typo, but the strange thing is, that it tries to lookup the button's > value rather than it's name (eg. having a ressource mapping like > mybutton.forward=go it would try to lookup "go"). All this works > perfectly well with my back-button on the same page, using the same action. > > Any ideas? > > Alexander > > ApplicationRessources.properties: > # Form Labels > authors-form.button.create = Autor hinzufügen > authors-form.button.remove = Autor löschen > authors-form.button.edit = Autor bearbeiten > authors-form.button.list = Autoren auflisten > authors-form.button.forward = weiter > authors-form.button.back = zurück > > list.jsp > <%@ page language="java"%> > <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> > <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> > <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" > prefix="logic"%> > <logic:messagesPresent message="false"> > <div class="error"> > <html:messages id="msg" message="false"> > <bean:write name="msg" filter="false"/> > </html:messages> > </div> > </logic:messagesPresent> > <logic:messagesPresent message="true"> > <div class="status"> > <html:messages id="msg" message="true"> > <bean:write name="msg" filter="false"/> > </html:messages> > </div> > </logic:messagesPresent> > <div class="group"> > <html:form action="/authors-list"><html:submit > property="submit"><bean:message > key="authors-form.button.create"/></html:submit></html:form> > <html:form action="/authors-list"><html:submit > property="submit"><bean:message > key="authors-form.button.back"/></html:submit></html:form> > <bean:write name="authorForm" property="strutsPage"/> > <html:form action="/authors-list"><html:submit > property="submit"><bean:message > key="authors-form.button.forward"/></html:submit></html:form> > </div> > <div class="group"> > <table class="list"> > <tr><th>Command</th><th>Author</th></tr> > <logic:iterate name="AUTHORS" id="author" indexId="author_id"> > <tr><td><html:form action="/authors-list"><html:submit > property="submit"><bean:message > key="authors-form.button.edit"/></html:submit><html:submit > property="submit"><bean:message > key="authors-form.button.remove"/></html:submit><html:hidden > property="id" name="author"/></html:form></td><td><bean:write > name="author" property="name"/> - <bean:write name="author" > property="description"/></td></tr> > </logic:iterate> > </table> > </div> > <div class="group"> > <html:form action="/authors-list"><html:submit > property="submit"><bean:message > key="authors-form.button.create"/></html:submit></html:form> > </div> > > AuthorsActionList.java > package de.sbow.struts.action.Authors; > > import java.util.HashMap; > import java.util.Map; > > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > > import org.apache.commons.beanutils.BeanUtils; > import org.apache.commons.logging.Log; > import org.apache.struts.action.ActionForm; > import org.apache.struts.action.ActionForward; > import org.apache.struts.action.ActionMapping; > import org.apache.struts.actions.LookupDispatchAction; > > import de.sbow.MSys.Authors.value.AuthorBeanValue; > import de.sbow.common.ServiceLocator; > import de.sbow.struts.form.AuthorEditForm; > import de.sbow.struts.model.AuthorModel; > > /** > * @author Alexander > * > * The Struts action-class for presenting > * the Authors list. > * > */ > public class AuthorsListAction extends LookupDispatchAction { > private static Log log = ServiceLocator.getInstance().getLog( > AuthorsListAction.class); > > /** > * Key method for mapping methods to buttons > */ > protected Map getKeyMethodMap() { > Map map = new HashMap(); > map.put("authors-form.button.create", "create"); > map.put("authors-form.button.edit", "edit"); > map.put("authors-form.button.remove", "remove"); > map.put("authors-form.button.forwar", > "forward"); > map.put("authors-form.button.back", "back"); > return map; > } > > /** > * Method create > * @param mapping > * @param form > * @param request > * @param response > * @return ActionForward > */ > public ActionForward create( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) throws Exception { > > // get form > AuthorEditForm authorForm = (AuthorEditForm) form; > // TODO check if this makes sense! > authorForm.reset(mapping, request); > > log.debug("Forwarding to \"authors create\"."); > return mapping.findForward("create"); > } > > /** > * Method edit > * @param mapping > * @param form > * @param request > * @param response > * @return ActionForward > */ > public ActionForward edit( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) throws Exception { > > // get form > AuthorEditForm authorForm = (AuthorEditForm) form; > // get author-model > AuthorModel am = new AuthorModel(); > // retieve author via model > AuthorBeanValue author = am.findById(authorForm.getId()); > // copy author into form > BeanUtils.copyProperties(authorForm, author); > > log.debug("Forwarding to \"authors edit\"."); > return mapping.findForward("edit"); > } > > /** > * Method remove > * @param mapping > * @param form > * @param request > * @param response > * @return ActionForward > */ > public ActionForward remove( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) throws Exception { > > // get form > AuthorEditForm authorForm = (AuthorEditForm) form; > // get author-model > AuthorModel am = new AuthorModel(); > // retieve author via model > AuthorBeanValue author = am.findById(authorForm.getId()); > // copy author into form > BeanUtils.copyProperties(authorForm, author); > > log.debug("Forwarding to \"authors remove\"."); > return mapping.findForward("remove"); > } > > /** > * Method forward > * @param mapping > * @param form > * @param request > * @param response > * @return ActionForward > */ > public ActionForward forward( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) throws Exception { > > // get form > AuthorEditForm authorForm = (AuthorEditForm) form; > authorForm.setStrutsPage(authorForm.getStrutsPage() +1 ); > > log.debug("Forwarding to \"authors list\"."); > return mapping.findForward("list"); > } > > /** > * Method back > * @param mapping > * @param form > * @param request > * @param response > * @return ActionForward > */ > public ActionForward back( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) throws Exception { > > // get form > AuthorEditForm authorForm = (AuthorEditForm) form; > authorForm.setStrutsPage(authorForm.getStrutsPage() -1 ); > > log.debug("Forwarding to \"authors list\"."); > return mapping.findForward("list"); > } > > } > > struts-config.xml > <action path="/authors-list" > name="authorForm" > input="msys.authors-list" > scope="request" > validate="false" > parameter="submit" > > type="de.sbow.struts.action.Authors.AuthorsListAction"> > <forward name="list" path="msys.authors-list"/> > <forward name="edit" path="msys.authors-edit" /> > <forward name="create" path="msys.authors-create" /> > <forward name="remove" path="msys.authors-remove" /> > </action> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- "You can't wake a person who is pretending to be asleep." ~Native Proverb~ "Each man is good in His sight. It is not necessary for eagles to be crows." ~Hunkesni (Sitting Bull), Hunkpapa Sioux~ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]