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]