s:label tag does not use Action Bean FQN when outside of s:form
---------------------------------------------------------------
Key: STS-543
URL: http://www.stripesframework.org/jira/browse/STS-543
Project: Stripes
Issue Type: Bug
Components: Tag Library
Affects Versions: Release 1.5
Environment: Stripes SVN build 883
Reporter: Frederic Daoud
The s:label tag can be used outside of the s:form tag to benefit from its
localization functionality.
My use case is displaying information in a label-field manner much like a form,
but in a read-only page. So in this case there is no form. But the labels are
the same as in the corresponding form page, so it'd be nice to use the same
s:label tags.
The problem is that I want to use FQN.name keys in the resource bundle, but the
s:label tag uses the FQN only if there is a parent form tag.
I suggest the same solution as the s:errors tag. That is, the s:errors tag also
works outside of a form tag, and uses the current Action Bean in that case. So
the s:label tag could also use the FQN of the current Action Bean for resource
bundle key lookup.
Here is a proposed patch against SVN build 883. Basically it uses the current
Action Bean if the form is null. I hesitate because this is in InputTagSupport
so affects several other tags. This can be a good thing or a bad thing....does
this code belong here or only in the InputLabelTag? Your opinion would be much
appreciated.
Index: stripes/src/net/sourceforge/stripes/tag/InputTagSupport.java
===================================================================
--- stripes/src/net/sourceforge/stripes/tag/InputTagSupport.java
(revision 883)
+++ stripes/src/net/sourceforge/stripes/tag/InputTagSupport.java
(working copy)
@@ -16,6 +16,7 @@
import net.sourceforge.stripes.action.ActionBean;
import net.sourceforge.stripes.controller.ParameterName;
+import net.sourceforge.stripes.controller.StripesConstants;
import net.sourceforge.stripes.controller.StripesFilter;
import net.sourceforge.stripes.exception.StripesJspException;
import net.sourceforge.stripes.exception.StripesRuntimeException;
@@ -250,11 +251,20 @@
try { form = getParentFormTag(); }
catch (StripesJspException sje) { /* Do nothing. */}
- return LocalizationUtility.getLocalizedFieldName(name,
- form == null ? null :
form.getAction(),
- form == null ? null :
form.getActionBeanClass(),
- locale);
+ String actionPath = null;
+ Class<? extends ActionBean> beanClass = null;
+ if (form != null) {
+ actionPath = form.getAction();
+ beanClass = form.getActionBeanClass();
+ }
+ else {
+ ActionBean mainBean = (ActionBean)
getPageContext().getRequest().getAttribute(StripesConstants.REQ_ATTR_ACTION_BEAN);
+ if (mainBean != null) {
+ beanClass = mainBean.getClass();
+ }
+ }
+ return LocalizationUtility.getLocalizedFieldName(name, actionPath,
beanClass, locale);
}
protected ValidationMetadata getValidationMetadata() throws
StripesJspException {
Thanks,
Freddy
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://www.stripesframework.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development