Apache Struts 2 Documentation > Home > Guides > Tag Developers Guide > Struts Tags > Tag Reference > UI Tag Reference > component |
Renders an custom UI widget using the specified templates. Additional objects can be passed in to the template using the param tags. Freemarker: Objects provided can be retrieve from within the template via $parameters.paramname. Jsp: Objects provided can be retrieve from within the template via <s:property value="%{parameters.paramname}" /> In the bottom JSP and Velocity samples, two parameters are being passed in to the component. From within the component, they can be accessed as:- Freemarker: $parameters.get('key1') and $parameters.get('key2') or $parameters.key1 and $parameters.key2 Jsp: <s:property value="%{parameters.key1}" /> and <s:property value="%{'parameters.key2'}" /> or <s:property value="%{parameters.get('key1')}" /> and <s:property value="%{parameters.get('key2')}" /> Currently, your custom UI components can be written in Velocity, JSP, or Freemarker, and the correct rendering engine will be found based on file extension. Remember: the value params will always be resolved against the ValueStack so if you mean to pass a string literal to your component, make sure to wrap it in quotes i.e. value="'value1'" otherwise, the the value stack will search for an Object on the stack with a method of getValue1(). (now that i've written this, i'm not entirely sure this is the case. i should verify this manana) |
![]() |
|
|
JSP <s:component template="/my/custom/component.vm"/> or <s:component template="/my/custom/component.vm"> <s:param name="key1" value="value1"/> <s:param name="key2" value="value2"/> </s:component> Velocity #s-component( "template=/my/custom/component.vm" ) or #s-component( "template=/my/custom/component.vm" ) #s-param( "name=key1" "value=value1" ) #s-param( "name=key2" "value=value2" ) #end Freemarker <@s..component template="/my/custom/component.ftl" /> or <@s..component template="/my/custom/component.ftl"> <@s..param name="key1" value="%{'value1'}" /> <@s..param name="key2" value="%{'value2'}" /> </@s..component> |