This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/struts-site.git
commit 85d480509d3ab32ec5972e11970a029d1d91bcae Author: Lukasz Lenart <lukaszlen...@apache.org> AuthorDate: Sat Sep 23 17:06:31 2017 +0200 Cleans up tag reference and related pages --- source/tag-developers/extending-themes.md | 145 +++++++-------------- source/tag-developers/generic-tag-reference.md | 40 ------ .../tag-developers/selecting-template-directory.md | 48 ++----- source/tag-developers/selecting-themes.md | 55 +++----- source/tag-developers/tag-reference.md | 62 ++++++++- source/tag-developers/template-loading.md | 123 ++++++----------- source/tag-developers/themes-and-templates.md | 3 - source/tag-developers/ui-tag-reference.md | 58 --------- source/tag-developers/ui-tags.md | 1 - 9 files changed, 172 insertions(+), 363 deletions(-) diff --git a/source/tag-developers/extending-themes.md b/source/tag-developers/extending-themes.md index f67c436..bf97cae 100644 --- a/source/tag-developers/extending-themes.md +++ b/source/tag-developers/extending-themes.md @@ -4,129 +4,82 @@ title: Tag Developers Guide (WIP) --- # Extending Themes +{:.no_toc} +* Will be replaced with the ToC, excluding a header +{:toc} -Most often, an application may just need to override a template (see [Template Loading](#PAGE_13817)) so that a certain control renders differently. Or, an application may need to add a new template to an existing theme. Other times, you might want to create an entirely new theme, perhaps because you are building a rich set of unique and reusable templates for your organization. +Most often, an application may just need to override a template (see [Template Loading](template-loading.html)) so that +a certain control renders differently. Or, an application may need to add a new template to an existing theme. Other +times, you might want to create an entirely new theme, perhaps because you are building a rich set of unique and reusable +templates for your organization. There are three ways to create new themes: -+ Create a new theme from scratch (**hard!**) +- Create a new theme from scratch (**hard!**) +- Wrap an existing theme +- Extend an existing theme -+ Wrap an existing theme +## Creating a New Theme from Scratch -+ Extend an existing theme +It's probably never a good idea to create a new theme from scratch. Instead, use the [simple theme](simple-theme.html) +as a starting point. The simple theme provides just enough foundation to make it easy to create new controls by extending +or wrapping the basic controls. Before starting a new theme, be sure to review the source templates for all of the provided +themes. The existing themes are your best guide to creating new themes. -__Creating a New Theme from Scratch__ +## Wrapping an Existing Theme +The [xhtml theme](xhtml-theme.html) provides several good examples of the "wrapping" technique. +The [simple theme](simple-theme.html) renders the basic control. The xhtml theme "dresses up" many of the controls +by adding a header and footer. -It's probably never a good idea to create a new theme from scratch. Instead, use the [simple theme](#PAGE_14291) as a starting point. The simple theme provides just enough foundation to make it easy to create new controls by extending or wrapping the basic controls. Before starting a new theme, be sure to review the source templates for all of the provided themes. The existing themes are your best guide to creating new themes. +### Wrapping a control -| - -__Wrapping an Existing Theme__ - -The [xhtml theme](#PAGE_13834) provides several good examples of the "wrapping" technique. The [simple theme](#PAGE_14291) renders the basic control. The xhtml theme "dresses up" many of the controls by adding a header and footer. - -**Wrapping a control** - - -~~~~~~~ +```html <#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" /> <#include "/${parameters.templateDir}/simple/xxx.ftl" /> <#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /> - -~~~~~~~ +``` Wrapping is a great way to augment the basic HTML elements provided by the simple theme. -__Extending an Existing Theme__ +### Extending an Existing Theme -One benefit of object-orientated programming is that it lets us "design by difference." We can extend an object and code only the behaviour that changes. Themes provide a similar capability. The subdirectory that hosts a theme can contain a - -~~~~~~~ -theme.properties -~~~~~~~ - file. A - -~~~~~~~ -parent -~~~~~~~ - entry can be added to the property file to designate a theme to extend. The [ajax theme](#PAGE_14205) extends the [xhtml theme](#PAGE_13834) using this technique. +One benefit of object-orientated programming is that it lets us "design by difference." We can extend an object and code +only the behaviour that changes. Themes provide a similar capability. The subdirectory that hosts a theme can contain +a `theme.properties` file. A `parent` entry can be added to the property file to designate a theme to extend. +The [ajax theme](ajax-theme.html) extends the [xhtml theme](xhtml-theme.html) using this technique. **/template/ajax/theme.properties** - -~~~~~~~ +``` parent = xhtml +``` -~~~~~~~ - -An extended theme does not need to implement every single template that the [Struts Tags](#PAGE_14248) expect. It only needs to implement the templates that change. The other templates are loaded from the parent template. - -__Special parameters__ - -[UIBean](http://struts.apache.org/development/2.x/struts2-core/apidocs/org/apache/struts2/components/UIBean.html)^[http://struts.apache.org/development/2.x/struts2-core/apidocs/org/apache/struts2/components/UIBean.html] provides few special parameters which can be used to build a new template (they are already used in - -~~~~~~~ -xhtml -~~~~~~~ - and - -~~~~~~~ -css_xhtml -~~~~~~~ - theme): - -+ - -~~~~~~~ -templateDir -~~~~~~~ - - current value of templateDir parameter, see [Selecting Template Directory](#PAGE_14227) - -+ - -~~~~~~~ -theme -~~~~~~~ - - used theme, see [Selecting Themes](#PAGE_14016) - -+ - -~~~~~~~ -template -~~~~~~~ - - name of the template file to use (i.e. text) - -+ - -~~~~~~~ -themeExpansionToken -~~~~~~~ - - special token used to indicate to search for a template also in parent theme (when used with - -~~~~~~~ -<#include /> -~~~~~~~ - directive) - -+ +An extended theme does not need to implement every single template that the [Struts Tags](struts-tags.html) expect. +It only needs to implement the templates that change. The other templates are loaded from the parent template. -~~~~~~~ -expandTheme -~~~~~~~ - - tells internal template loader mechanism to try load template from current theme and then from parent theme (and parent theme, and so on) +## Special parameters -Using +[UIBean](http://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/components/UIBean.html) provides few +special parameters which can be used to build a new template (they are already used in `xhtml` and `css_xhtml` theme): -~~~~~~~ -expandTheme -~~~~~~~ - parameter allows to override only some parts of the theme's templates, e.g. css.ftl. You can define a new theme (set theme.properties) and override just single file. +- `templateDir` - current value of templateDir parameter, see [Selecting Template Directory](selecting-template-directory.html) +- `theme` - used theme, see [Selecting Themes](selecting-themes.html) +- `template` - name of the template file to use (i.e. text) +- `themeExpansionToken` - a special token used to indicate to search for a template also in parent theme (when used with + `<#include />` directive) +- `expandTheme` - tells internal template loader mechanism to try load template from current theme and then from parent + theme (and parent theme, and so on) -\${parameters.expandTheme} is a recurrence which tells ThemeManager to load template from current theme and then from parent theme (defined in theme.properties) and so on. +Using `expandTheme` parameter allows to override only some parts of the theme's templates, e.g. `css.ftl`. You can +define a new theme (set `theme.properties`) and override just single file. -Please also notice that the ThemeManager builds list of possible templates based on current theme and inherited themes (/template/custom/textarea.ftl, /template/xhtml/textarea.ftl, /template/simple/textarea.ftl). This is also true for templates which are loaded via \${parameters.expandTheme}. +`${parameters.expandTheme}` is a recurrence which tells `ThemeManager` to load template from current theme and then +from parent theme (defined in `theme.properties`) and so on. - (ok) See also example _Struts 2 Themes_ or [Creating a Theme in Struts 2](http://www.vitarara.org/cms/struts_2_cookbook/creating_a_theme)^[http://www.vitarara.org/cms/struts_2_cookbook/creating_a_theme] (Mark Menard) +Please also notice that the `ThemeManager` builds list of possible templates based on current theme and inherited +themes (`/template/custom/textarea.ftl`, `/template/xhtml/textarea.ftl`, `/template/simple/textarea.ftl`). This is also +true for templates which are loaded via `${parameters.expandTheme}`. +> See also example [Struts 2 Themes]() or [Creating a Theme in Struts 2](http://www.vitarara.org/cms/struts_2_cookbook/creating_a_theme) (Mark Menard) diff --git a/source/tag-developers/generic-tag-reference.md b/source/tag-developers/generic-tag-reference.md deleted file mode 100644 index 8e3d6ec..0000000 --- a/source/tag-developers/generic-tag-reference.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: Tag Developers Guide (WIP) ---- - -# Generic Tag Reference - -Struts Generic Tags control the execution flow as pages render. - -## Control Tags - -Controls tags provide the ability to manipulate collections and conditionally produce content. - -> Please make sure you have read the [Tag Syntax](tag-syntax.html) document and understand how tag attribute syntax works. - -- [if](if-tag.html) -- [elseif](elseif-tag.html) -- [else](else-tag.html) -- [append](append-tag.html) -- [generator](generator-tag.html) -- [iterator](iterator-tag.html) -- [merge](merge-tag.html) -- [sort](sort-tag.html) -- [subset](subset-tag.html) - -## Data Tags - -- [a](a-tag.html) -- [action](action-tag.html) -- [bean](bean-tag.html) -- [date](date-tag.html) -- [debug](debug-tag.html) -- [i18n](i18n-tag.html) -- [include](include-tag.html) -- [param](param-tag.html) -- [property](property-tag.html) -- [push](push-tag.html) -- [set](set-tag.html) -- [text](text-tag.html) -- [url](url-tag.html) diff --git a/source/tag-developers/selecting-template-directory.md b/source/tag-developers/selecting-template-directory.md index 057867a..18dbbce 100644 --- a/source/tag-developers/selecting-template-directory.md +++ b/source/tag-developers/selecting-template-directory.md @@ -7,45 +7,13 @@ title: Tag Developers Guide (WIP) Template directory can be selected using several different rules, in this order: -1. The +1. The `templateDir` attribute on the specific tag +2. The page-scoped attribute named `templateDir` +3. The request-scoped attribute named `templateDir` +4. The session-scoped attribute named `templateDir` +5. The application-scoped attribute named `templateDir` +6. The `struts.ui.templateDir` property in `struts.xml` (defaults to _template_) -~~~~~~~ -templateDir -~~~~~~~ - attribute on the specific tag - -2. The page-scoped attribute named - -~~~~~~~ -templateDir -~~~~~~~ - -3. The request-scoped attribute named - -~~~~~~~ -templateDir -~~~~~~~ - -4. The session-scoped attribute named - -~~~~~~~ -templateDir -~~~~~~~ - -5. The application-scoped attribute named - -~~~~~~~ -templateDir -~~~~~~~ - -6. The - -~~~~~~~ -struts.ui.templateDir -~~~~~~~ - property in _struts.properties_ (defaults to _template_ ) - -__Tips__ - -+ To change the template directory for the entire application, modify the _struts.properties_ . +## Tips +- To change the template directory for the entire application, modify the `struts.xml` diff --git a/source/tag-developers/selecting-themes.md b/source/tag-developers/selecting-themes.md index 4a0f3ae..f803d4b 100644 --- a/source/tag-developers/selecting-themes.md +++ b/source/tag-developers/selecting-themes.md @@ -7,42 +7,19 @@ title: Tag Developers Guide (WIP) Themes can be selected using several different rules, in this order: -1. The - -~~~~~~~ -theme -~~~~~~~ - attribute on the specific tag - -2. The - -~~~~~~~ -theme -~~~~~~~ - attribute on a tag's surrounding [form](#PAGE_14201) tag - -3. The page-scoped attribute named "theme" - -4. The request-scoped attribute named "theme" - -5. The session-scoped attribute named "theme" - -6. The application-scoped attribute named "theme" - -7. The - -~~~~~~~ -struts.ui.theme -~~~~~~~ - property in _struts.properties_ (defaults to _xhtml_ ) - -See "_Can I change theme on a per-page basis_ " page for using scoped "theme" attribute. - -__Tips__ - -+ To override an entire form's theme, change the "theme" attribute of the form. (Convenient for using the [ajax theme](#PAGE_14205) for specific forms, for example.) - -+ To support user-selected themes, set the theme in the user's session. - -+ To change the theme for the entire application, modify the _struts.properties_ . - +1. The `theme` attribute on the specific tag +2. The `theme` attribute on a tag's surrounding [form](form-tag.html) tag +3. The page-scoped attribute named `theme` +4. The request-scoped attribute named `theme` +5. The session-scoped attribute named `theme` +6. The application-scoped attribute named `theme` +7. The `struts.ui.theme` property in `struts.xml` (defaults to _xhtml_) + +See [Can I change theme on a per-page basis]() page for using scoped `theme` attribute. + +## Tips + +- To override an entire form's theme, change the "theme" attribute of the form. (Convenient for using + the [ajax theme](ajax-theme.html) for specific forms, for example.) +- To support user-selected themes, set the theme in the user's session. +- To change the theme for the entire application, modify the `struts.xml`. diff --git a/source/tag-developers/tag-reference.md b/source/tag-developers/tag-reference.md index 2509e5b..c44e19b 100644 --- a/source/tag-developers/tag-reference.md +++ b/source/tag-developers/tag-reference.md @@ -3,9 +3,65 @@ layout: default title: Tag Developers Guide (WIP) --- -# Tag Reference### +# Tag Reference +{:.no_toc} -[Generic Tags](generic-tags.html) +* Will be replaced with the ToC, excluding a header +{:toc} -[UI Tags](ui-tags.html) +Generic tags are used for controlling the execution flow when the pages render. These tags also allow for data extraction +from places other than your action or the value stack, such as _Localization_ , JavaBeans, and including additional URLs +or action executions. +- Control Tags provide control flow, such as `if`, `else`, and `iterator` +- Data Tags allow for data manipulation or creation, such as `bean`, `push`, and `i18n` + +> Please make sure you have read the [Tag Syntax](tag-syntax.html) document and understand how tag attribute syntax works. + +## Generic Tags + +Struts Generic Tags control the execution flow as pages render. + +|**Control Tags**| |**Data Tags**| +| |[if](if-tag.html) | |[a](a-tag.html) | +| |[elseif](elseif-tag.html) | |[action](action-tag.html) | +| |[else](else-tag.html) | |[bean](bean-tag.html) | +| |[append](append-tag.html) | |[date](date-tag.html) | +| |[generator](generator-tag.html)| |[debug](debug-tag.html) | +| |[iterator](iterator-tag.html) | |[i18n](i18n-tag.html) | +| |[merge](merge-tag.html) | |[include](include-tag.html) | +| |[sort](sort-tag.html) | |[param](param-tag.html) | +| |[subset](subset-tag.html) | |[property](property-tag.html)| +| | | |[push](push-tag.html) | +| | | |[set](set-tag.html) | +| | | |[text](text-tag.html) | +| | | |[url](url-tag.html) | + + +## UI Tag Reference + +Struts UI Tags display data in rich and reusable HTML. + +|**Form Tags**| |**Non-Form UI Tags** | +| |[checkbox](checkbox-tag.html) | |[actionerror](actionerror-tag.html) | +| |[checkboxlist](checkboxlist-tag.html) | |[actionmessage](actionmessage-tag.html)| +| |[combobox](combobox-tag.html) | |[component](component-tag.html) | +| |[datetextfield](datetextfield-tag.html) | |[div](div-tag.html) | +| |[doubleselect](doubleselect-tag.html) | |[fielderror](fielderror-tag.html) | +| |[head](head-tag.html) | | | +| |[file](file-tag.html) | | | +| |[form](form-tag.html) | | | +| |[hidden](hidden-tag.html) | | | +| |[inputtransferselect](inputtransferselect-tag.html) | | | +| |[label](label-tag.html) | | | +| |[optiontransferselect](optiontransferselect-tag.html)| | | +| |[optgroup](optgroup-tag.html) | | | +| |[password](password-tag.html) | | | +| |[radio](radio-tag.html) | | | +| |[reset](reset-tag.html) | | | +| |[select](select-tag.html) | | | +| |[submit](submit-tag.html) | | | +| |[textarea](textarea-tag.html) | | | +| |[textfield](textfield-tag.html) | | | +| |[token](token-tag.html) | | | +| |[updownselect](updownselect-tag.html) | | | diff --git a/source/tag-developers/template-loading.md b/source/tag-developers/template-loading.md index 912e270..379c63e 100644 --- a/source/tag-developers/template-loading.md +++ b/source/tag-developers/template-loading.md @@ -4,108 +4,65 @@ title: Tag Developers Guide (WIP) --- # Template Loading +{:.no_toc} +* Will be replaced with the ToC, excluding a header +{:toc} -Templates are loaded first by searching the application and then by searching the classpath. If a template needs to be overridden, an edited copy can be placed in the application, so that is found first. +Templates are loaded first by searching the application and then by searching the classpath. If a template needs to be +overridden, an edited copy can be placed in the application, so that is found first. -**(i) One for all** +**One for all** +> FreeMarker is the default templating engine. The FreeMarker templates are used regardless of what format the view may +> use. Internally, the JSP, FTL, Velocity tags are all rendered using FreeMarker. -> +## Template and Themes -> +Templates are loaded based the template directory and theme name (see [Selecting Themes](selecting-themes.html)). +The template directory is defined by the `struts.ui.templateDir` property in `struts.xml` (defaults to `template`). +If a tag is using the `xhtml` theme, the following two locations will be searched (in this order): -> FreeMarker is the default templating engine. The FreeMarker templates are used regardless of what format the view may use. Internally, the JSP, FTL, Velocity tags are all rendered using FreeMarker. +|In the application|`/template/xhtml/template.ftl`| +|In the classpath|`/template/xhtml/template.ftl`| -> +> For performance reasons, you may want to prefer the first location, although the second one is more flexible. +> See [Performance Tuning](../core-developers/performance-tuning.html) for a discussion on this topic. -__Template and Themes__ +## Overriding Templates -Templates are loaded based the template directory and theme name (see [Selecting Themes](#PAGE_14016)). The template directory is defined by the +The default templates provided in the `struts2-core.jar` should suit the needs of many applications. However, +if a template needs to be modified, it's easy to plug in a new version. Extract the template you need to change from +the `struts2-core.jar`, make the modifications, and save the updated copy to `/template/$theme/$template.ftl`. +If you are using the `xhtml` theme and need to change how the select tags render, edit that template and save it to +`/template/xhtml/select.ftl`. -~~~~~~~ -struts.ui.templateDir -~~~~~~~ - property in _struts.properties_ (defaults to +> It is easier and better to edit and override an existing template than provide a new one of your own. -~~~~~~~ -template -~~~~~~~ -). If a tag is using the +## Altering Template Loading Behaviour -~~~~~~~ -xhtml -~~~~~~~ - theme, the following two locations will be searched (in this order): +It is possible to load template from other locations, like the file system or a URL. Loading templates from alternate +locations can be useful not only for tags, but for custom results. For details, see the [FreeMarker](freemarker.html) +documentation and consult the section on extending the FreeMarkerManager. -|In the application|/template/xhtml/template.ftl| -|------------------|-----------------------------| -|In the classpath|/template/xhtml/template.ftl| +## Alternative Template Engines - (!) For performance reasons, you may want to prefer the first location, although the second one is more flexible. See _Performance Tuning_ for a discussion on this topic. +The framework provides for template rendering engines other than FreeMarker. (Though, there is rarely a need to use +another system!) -__Overriding Templates__ - -The default templates provided in the - -~~~~~~~ -struts-core.jar -~~~~~~~ - should suit the needs of many applications. However, if a template needs to be modified, it's easy to plug in a new version. Extract the template you need to change from the - -~~~~~~~ -struts-core.jar -~~~~~~~ -, make the modifications, and save the updated copy to - -~~~~~~~ -/template/$theme/$template.ftl -~~~~~~~ -. If you are using the xhmtl theme and need to change how the select tags render, edit that template and save it to - -~~~~~~~ -/template/xhtml/select.ftl -~~~~~~~ -. - - (!) It is easier and better to edit and override an existing template than provide a new one of your own. - -__Altering Template Loading Behaviour__ - -It is possible to load template from other locations, like the file system or a URL. Loading templates from alternate locations can be useful not only for tags, but for custom results. For details, see the [FreeMarker](#PAGE_14078) documentation and consult the section on extending the FreeMarkerManager. - -__Alternative Template Engines__ - -The framework provides for template rendering engines other than FreeMarker. (Though, there is rarely a need to use another system!) - -**(!) Don't try this at home!** - - -> - -> +**Don't try this at home!** > Alternative template engines are best left to advanced users with special > needs! -> - -The framework supports three template engines, which can be controlled by the - -~~~~~~~ -struts.ui.templateSuffix -~~~~~~~ - in _struts.properties_ . - -|ftl (default)|[FreeMarker](#PAGE_14078)-based template engine| -|-------------|------------------------------------------------| -|vm|[Velocity](#PAGE_13894)-based template engine| -|jsp|[JSP](#PAGE_14141)-based template engine| - -The only set of templates and themes provided in the distribution is for FreeMarker. In order to use another template engine, you must provide your own template and theme for that engine. - - +The framework supports three template engines, which can be controlled by the `struts.ui.templateSuffix` in +`struts.xml`. -| Don't feel that you need to rewrite the templates to match your view format. If you need to customize the template, try copying and modifying the FreeMarker template first. Most changes should be obvious. +|ftl (default)|[FreeMarker](freemarker.html)-based template engine| +|vm|[Velocity](velocity.html)-based template engine| +|jsp|[JSP](jsp.html)-based template engine| -| +The only set of templates and themes provided in the distribution is for FreeMarker. In order to use another template +engine, you must provide your own template and theme for that engine. +> Don't feel that you need to rewrite the templates to match your view format. If you need to customize the template, +> try copying and modifying the FreeMarker template first. Most changes should be obvious. diff --git a/source/tag-developers/themes-and-templates.md b/source/tag-developers/themes-and-templates.md index 472fca0..09f2b97 100644 --- a/source/tag-developers/themes-and-templates.md +++ b/source/tag-developers/themes-and-templates.md @@ -10,7 +10,6 @@ The notions of "themes" and "templates" are at the core of the HTML [Struts Tags ## Definitions | tag | A small piece of code executed from within [JSP](jsp.html), [FreeMarker](freemarker.html), or [Velocity](velocity.html). | -|-----|------------------------------------------------------------------------------------------------------------------------| | template | A bit of code, usually written in [FreeMarker](freemarker.html), that can be rendered by certain tags (HTML tags) | | theme | A collection of _templates_ packaged together to provide common functionality | @@ -19,7 +18,6 @@ The notions of "themes" and "templates" are at the core of the HTML [Struts Tags ## Template Basics |[Template Loading](template-loading.html)| How templates are loaded | -|-------------------------------|--------------------------| |[Selecting Template Directory](selecting-template-directory.html)| How the template directories are loaded | |[Selecting Themes](selecting-themes.html)| How you can pick a theme when writing your results | |[Extending Themes](extending-themes.html)| How to create your own themes based on existing themes | @@ -27,7 +25,6 @@ The notions of "themes" and "templates" are at the core of the HTML [Struts Tags ## More About Themes |[simple theme](simple-theme.html)| A minimal theme with no "bells and whistles" | -|---------------------------|----------------------------------------------| |[xhtml theme](xhtml-theme.html)| The default theme that uses common HTML practices | |[css_xhtml theme](css-xhtml-theme.html)| The [xhtml theme](xhtml-theme.html) re-implemented using strictly CSS for layout | |[ajax theme](ajax-theme.html)| A theme based on the [xhtml theme](xhtml-theme.html) that provides advanced AJAX features | diff --git a/source/tag-developers/ui-tag-reference.md b/source/tag-developers/ui-tag-reference.md deleted file mode 100644 index 766839a..0000000 --- a/source/tag-developers/ui-tag-reference.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: default -title: Tag Developers Guide (WIP) ---- - -# UI Tag Reference - -Struts UI Tags display data in rich and reusable HTML. - -## Form Tags - -- [checkbox](checkbox-tag.html) -- [checkboxlist](checkboxlist-tag.html) -- [combobox](combobox-tag.html) -- [datetextfield](datetextfield-tag.html) -- [doubleselect](doubleselect-tag.html) -- [head](head-tag.html) -- [file](file-tag.html) -- [form](form-tag.html) -- [hidden](hidden-tag.html) -- [inputtransferselect](inputtransferselect-tag.html) -- [label](label-tag.html) -- [optiontransferselect](optiontransferselect-tag.html) -- [optgroup](optgroup-tag.html) -- [password](password-tag.html) -- [radio](radio-tag.html) -- [reset](reset-tag.html) -- [select](select-tag.html) -- [submit](submit-tag.html) -- [textarea](textarea-tag.html) -- [textfield](textfield-tag.html) -- [token](token-tag.html) -- [updownselect](updownselect-tag.html) - -## Non-Form UI Tags - -- [actionerror](actionerror-tag.html) -- [actionmessage](actionmessage-tag.html) -- [component](component-tag.html) -- [div](div-tag.html) -- [fielderror](fielderror-tag.html) - -## Ajax Tags - -- [a](a-tag.html) -- [autocompleter](autocompleter-tag.html) -- [bind](bind-tag.html) -- [datetimepicker](datetimepicker-tag.html) -- [div](div-tag.html) -- [head](head-tag.html) -- [submit](submit-tag.html) -- [tabbedPanel](tabbed-tag.html) -- [textarea](textarea-tag.html) -- [tree](tree-tag.html) -- [treenode](treenode-tag.html) - -> For detailed descriptions of each tag, including usage examples, see the [Tag Reference](tag-reference.html) - diff --git a/source/tag-developers/ui-tags.md b/source/tag-developers/ui-tags.md index c33c4ba..820eee1 100644 --- a/source/tag-developers/ui-tags.md +++ b/source/tag-developers/ui-tags.md @@ -14,7 +14,6 @@ Template support allows UI tags to build a rich set of reusable HTML components requirements. For details, see [Themes and Templates](themes-and-templates.html). |[Themes and Templates](themes-and-templates.html)| A must-read explanation of how themes and templates are used when rendering UI tags. | -|-----------------------------------|----------------------------------------------------------------------------------------| |[Form Tags](form-tags.html)| provide all form-related UI output, such as _form_ , _textfield_ , and _select_ . | | Non Form Tags | provide all non-form-related UI output, such as _a_ , _div_ , and _tabbedPanel_ . | -- To stop receiving notification emails like this one, please contact "commits@struts.apache.org" <commits@struts.apache.org>.