📄 strutsutils.java
字号:
{
return null;
}
return mapping.getAttribute();
}
/*************************** Utilities *************************/
/**
* Return the form action converted into an action mapping path. The
* value of the <code>action</code> property is manipulated as follows in
* computing the name of the requested mapping:
* <ul>
* <li>Any filename extension is removed (on the theory that extension
* mapping is being used to select the controller servlet).</li>
* <li>If the resulting value does not start with a slash, then a
* slash is prepended.</li>
* </ul>
*/
public static String getActionMappingName(String action) {
String value = action;
int question = action.indexOf("?");
if (question >= 0) {
value = value.substring(0, question);
}
int slash = value.lastIndexOf("/");
int period = value.lastIndexOf(".");
if ((period >= 0) && (period > slash)) {
value = value.substring(0, period);
}
return value.startsWith("/") ? value : ("/" + value);
}
/**
* Returns the form action converted into a server-relative URI
* reference.
*
* @param application the servlet context
* @param request the servlet request
* @param action the name of an action as per struts-config.xml
*/
public static String getActionMappingURL(ServletContext application,
HttpServletRequest request,
String action)
{
StringBuffer value = new StringBuffer(request.getContextPath());
ModuleConfig config =
(ModuleConfig)request.getAttribute(Globals.MODULE_KEY);
if (config != null)
{
value.append(config.getPrefix());
}
/* Use our servlet mapping, if one is specified */
String servletMapping =
(String)application.getAttribute(Globals.SERVLET_KEY);
if (servletMapping != null)
{
String queryString = null;
int question = action.indexOf("?");
if (question >= 0)
{
queryString = action.substring(question);
}
String actionMapping = TagUtils.getInstance().getActionMappingName(action);
if (servletMapping.startsWith("*."))
{
value.append(actionMapping);
value.append(servletMapping.substring(1));
}
else if (servletMapping.endsWith("/*"))
{
value.append(servletMapping.substring
(0, servletMapping.length() - 2));
value.append(actionMapping);
}
if (queryString != null)
{
value.append(queryString);
}
}
else
{
/* Otherwise, assume extension mapping is in use and extension is
* already included in the action property */
if (!action.startsWith("/"))
{
value.append("/");
}
value.append(action);
}
/* Return the completed value */
return value.toString();
}
/**
* Returns the action forward name converted into a server-relative URI
* reference.
*
* @param app the servlet context
* @param request the servlet request
* @param forward the name of a forward as per struts-config.xml
*/
public static String getForwardURL(HttpServletRequest request,
ServletContext app,
String forward)
{
ModuleConfig moduleConfig = ModuleUtils.getInstance().getModuleConfig(request, app);
//TODO? beware of null module config if ActionServlet isn't init'ed?
ForwardConfig fc = moduleConfig.findForwardConfig(forward);
if (fc == null)
{
return null;
}
StringBuffer url = new StringBuffer();
if (fc.getPath().startsWith("/"))
{
url.append(request.getContextPath());
url.append(RequestUtils.forwardURL(request, fc, moduleConfig));
}
else
{
url.append(fc.getPath());
}
return url.toString();
}
/**
* Returns a formatted error message. The error message is assembled from
* the following three pieces: First, value of message resource
* "errors.header" is prepended. Then, the list of error messages is
* rendered. Finally, the value of message resource "errors.footer"
* is appended.
*
* @param property the category of errors to markup and return
* @param request the servlet request
* @param session the HTTP session
* @param application the servlet context
*
* @return The formatted error message. If no error messages are queued,
* an empty string is returned.
*/
public static String errorMarkup(String property,
HttpServletRequest request,
HttpSession session,
ServletContext application)
{
return errorMarkup(property, null, request, session, application);
}
/**
* Returns a formatted error message. The error message is assembled from
* the following three pieces: First, value of message resource
* "errors.header" is prepended. Then, the list of error messages is
* rendered. Finally, the value of message resource "errors.footer"
* is appended.
*
* @param property the category of errors to markup and return
* @param bundle the message resource bundle to use
* @param request the servlet request
* @param session the HTTP session
* @param application the servlet context
* @since VelocityTools 1.1
* @return The formatted error message. If no error messages are queued,
* an empty string is returned.
*/
public static String errorMarkup(String property,
String bundle,
HttpServletRequest request,
HttpSession session,
ServletContext application)
{
ActionMessages errors = getErrors(request);
if (errors == null)
{
return "";
}
/* fetch the error messages */
Iterator reports = null;
if (property == null)
{
reports = errors.get();
}
else
{
reports = errors.get(property);
}
if (!reports.hasNext())
{
return "";
}
/* Render the error messages appropriately if errors have been queued */
StringBuffer results = new StringBuffer();
String header = null;
String footer = null;
String prefix = null;
String suffix = null;
Locale locale = getLocale(request, session);
MessageResources resources =
getMessageResources(request, application, bundle);
if (resources != null)
{
header = resources.getMessage(locale, "errors.header");
footer = resources.getMessage(locale, "errors.footer");
prefix = resources.getMessage(locale, "errors.prefix");
suffix = resources.getMessage(locale, "errors.suffix");
}
if (header == null)
{
header = "errors.header";
}
if (footer == null)
{
footer = "errors.footer";
}
/* prefix or suffix are optional, be quiet if they're missing */
if (prefix == null)
{
prefix = "";
}
if (suffix == null)
{
suffix = "";
}
results.append(header);
results.append("\r\n");
String message;
while (reports.hasNext())
{
message = null;
ActionMessage report = (ActionMessage)reports.next();
if (resources != null && report.isResource())
{
message = resources.getMessage(locale,
report.getKey(),
report.getValues());
}
results.append(prefix);
if (message != null)
{
results.append(message);
}
else
{
results.append(report.getKey());
}
results.append(suffix);
results.append("\r\n");
}
results.append(footer);
results.append("\r\n");
/* return result */
return results.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -