* 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
		Add a link
		
	
		Reference in a new issue