* Support standard parameters such as prefix, suffix, default for nested parameters
(but only convert result to string if actually required)
This commit is contained in:
parent
e18c085317
commit
6a19c73e27
1 changed files with 21 additions and 1 deletions
|
@ -322,7 +322,7 @@ public final class Skin {
|
||||||
private Object processParameter(Object value, RenderContext cx)
|
private Object processParameter(Object value, RenderContext cx)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
if (value instanceof Macro) {
|
if (value instanceof Macro) {
|
||||||
return ((Macro) value).invokeAsMacro(cx, null, true);
|
return ((Macro) value).invokeAsParameter(cx);
|
||||||
} else if (value instanceof ProcessedParameter) {
|
} else if (value instanceof ProcessedParameter) {
|
||||||
return ((ProcessedParameter) value).process(cx.reval);
|
return ((ProcessedParameter) value).process(cx.reval);
|
||||||
} else {
|
} else {
|
||||||
|
@ -731,6 +731,26 @@ public final class Skin {
|
||||||
return filter(null, cx);
|
return filter(null, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render this macro as nested macro, only converting to string
|
||||||
|
* if necessary.
|
||||||
|
*/
|
||||||
|
Object invokeAsParameter(RenderContext cx) throws Exception {
|
||||||
|
StandardParams stdParams = standardParams.render(cx);
|
||||||
|
Object value = invokeAsMacro(cx, stdParams, true);
|
||||||
|
if (stdParams.prefix != null || stdParams.suffix != null) {
|
||||||
|
ResponseTrans res = cx.reval.getResponse();
|
||||||
|
res.pushBuffer(null);
|
||||||
|
writeResponse(value, cx.reval, stdParams, true);
|
||||||
|
return res.popString();
|
||||||
|
} else if (stdParams.defaultValue != null &&
|
||||||
|
(value == null || "".equals(value))) {
|
||||||
|
return stdParams.defaultValue;
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render the macro given a handler object.
|
* Render the macro given a handler object.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue