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]

