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]

Reply via email to