| |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
org.apache.struts.actions
Class LookupDispatchAction
java.lang.Objectorg.apache.struts.action.Action
org.apache.struts.actions.DispatchAction
org.apache.struts.actions.LookupDispatchAction
-
public abstract class
LookupDispatchAction
extends
DispatchAction
An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where an HTML form has multiple submit buttons with the same name. The button name is specified by the parameter property of the corresponding ActionMapping. To configure the use of this action in your struts-config.xml file, create an entry like this:
<action path="/test"
type="org.example.MyAction"
name="MyForm"
scope="request"
input="/test.jsp"
parameter="method"/>
which will use the value of the request parameter named "method" to locate the corresponding key in ApplicationResources. For example, you might have the following ApplicationResources.properties:
button.add=Add Record
button.delete=Delete Record
And your JSP would have the following format for submit buttons:
<html:form action="/test">
<html:submit property="method">
<bean:message key="button.add"/>
</html:submit>
<html:submit property="method">
<bean:message key="button.delete"/>
</html:submit>
</html:form>
Your subclass must implement both getKeyMethodMap and the methods defined in the map. An example of such implementations are:
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.add", "add");
map.put("button.delete", "delete");
return map;
}
public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// do add
return mapping.findForward("success");
}
public ActionForward delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// do delete
return mapping.findForward("success");
}
Notes - If duplicate values exist for the keys returned by
getKeys, only the first one found will be returned. If no corresponding key
is found then an exception will be thrown. You can override the
method unspecified to provide a custom handler. If the submit
was cancelled (a html:cancel button was pressed), the custom
handler cancelled will be used instead.
| Field Summary | |
protected java.util.Map | keyMethodMap Resource key to method name lookup. |
protected java.util.Map | localeMap Reverse lookup map from resource value to resource key. |
| Fields inherited from class org.apache.struts.actions.DispatchAction |
clazz, log, messages, methods, types |
| Fields inherited from class org.apache.struts.action.Action |
defaultLocale, servlet |
| Constructor Summary | |
LookupDispatchAction() | |
| Method Summary | |
ActionForward | execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it). |
protected abstract java.util.Map | getKeyMethodMap() Provides the mapping from resource key to method name. |
protected java.lang.String | getLookupMapName(javax.servlet.http.HttpServletRequest request, java.lang.String keyName, ActionMapping mapping) Lookup the method name corresponding to the client request's locale. |
protected java.lang.String | getMethodName(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String parameter) Returns the method name, given a parameter's value. |
private java.util.Map | initLookupMap(javax.servlet.http.HttpServletRequest request, java.util.Locale userLocale) This is the first time this Locale is used so build the reverse lookup Map. |
| Methods inherited from class org.apache.struts.actions.DispatchAction |
cancelled, dispatchMethod, getMethod, unspecified |
| Methods inherited from class org.apache.struts.action.Action |
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
localeMap
protected java.util.Map localeMap
-
Reverse lookup map from resource value to resource key.
keyMethodMap
protected java.util.Map keyMethodMap
-
Resource key to method name lookup.
| Constructor Detail |
LookupDispatchAction
public LookupDispatchAction()
| Method Detail |
execute
public ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.lang.Exception
-
Process the specified HTTP request, and create the corresponding HTTP
response (or forward to another web component that will create it).
Return an
ActionForwardinstance describing where and how control should be forwarded, ornullif the response has already been completed. -
-
Overrides:
-
executein classDispatchAction
-
-
-
Parameters:
-
mapping- The ActionMapping used to select this instance -
request- The HTTP request we are processing -
response- The HTTP response we are creating -
form- The optional ActionForm bean for this request (if any)
Returns:
- Describes where and how control should be forwarded. Throws:
-
java.lang.Exception- if an error occurs
-
initLookupMap
private java.util.Map initLookupMap(javax.servlet.http.HttpServletRequest request,
java.util.Locale userLocale)
-
This is the first time this Locale is used so build the reverse lookup Map.
Search for message keys in all configured MessageResources for
the current module.
-
getKeyMethodMap
protected abstract java.util.Map getKeyMethodMap()
-
Provides the mapping from resource key to method name.
-
-
Returns:
- Resource key / method name map.
getLookupMapName
protected java.lang.String getLookupMapName(javax.servlet.http.HttpServletRequest request,
java.lang.String keyName,
ActionMapping mapping)
throws javax.servlet.ServletException
-
Lookup the method name corresponding to the client request's locale.
-
-
Parameters:
-
request- The HTTP request we are processing -
keyName- The parameter name to use as the properties key -
mapping- The ActionMapping used to select this instance
Returns:
- The method's localized name. Throws:
-
javax.servlet.ServletException- if keyName cannot be resolved
Since:
- Struts 1.2.0
-
getMethodName
protected java.lang.String getMethodName(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String parameter) throws java.lang.Exception
-
Returns the method name, given a parameter's value.
-
-
Overrides:
-
getMethodNamein classDispatchAction
-
-
-
Parameters:
-
mapping- The ActionMapping used to select this instance -
form- The optional ActionForm bean for this request (if any) -
request- The HTTP request we are processing -
response- The HTTP response we are creating -
parameter- TheActionMappingparameter's name
Returns:
- The method's name. Throws:
-
java.lang.Exception
Since:
- Struts 1.2.0
-
| |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
Copyright © 2000-2004 - The Apache Software Foundation
博客介绍了org.apache.struts.actions包下的LookupDispatchAction类,它是一个抽象Action,可将请求分发到子类映射方法,适用于HTML表单有多个同名提交按钮的情况。还提及子类需实现getKeyMethodMap及映射中定义的方法。

149

被折叠的 条评论
为什么被折叠?



