Edit on GitHub << back to Themes and Templates

# html5 theme

The html5 theme extends the simple theme and provides modern HTML5 output.

## Features

- Extends the simple theme via `theme.properties`
- Clean, modern HTML5 markup output
- Validation and error reporting

## Theme Configuration

The HTML5 theme extends the simple theme via `theme.properties`:

    #
    # Licensed to the Apache Software Foundation (ASF) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The ASF licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #  http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing,
    # software distributed under the License is distributed on an
    # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    # KIND, either express or implied.  See the License for the
    # specific language governing permissions and limitations
    # under the License.
    #
    parent = simple

## Using the HTML5 Theme

Set the theme on individual tags:

    <s:textfield name="username" theme="html5" />

Or set it for an entire form:

    <s:form action="login" theme="html5">
        <s:textfield name="username" />
        <s:password name="password" />
        <s:submit value="Login" />
    </s:form>

Or globally in `struts.xml`:

    <constant name="struts.ui.theme" value="html5" />

## Available Templates

The HTML5 theme includes templates for all standard Struts UI tags including: textfield, textarea, password, checkbox, checkboxlist, radio, select, file, hidden, label, combobox, reset, submit, form, and more.

## Text Field Template Example

    <#--
    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *  http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    -->
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" /><#rt/>
    <input<#rt/>
     type="${(attributes.type!"text")}"<#rt/>
     name="${(attributes.name!"")}"<#rt/>
    <#if attributes.get("size")?has_content>
     size="${attributes.get("size")}"<#rt/>
    </#if>
    <#if attributes.maxlength?has_content>
     maxlength="${attributes.maxlength}"<#rt/>
    </#if>
    <#if attributes.nameValue??>
     value="${attributes.nameValue}"<#rt/>
    </#if>
    <#if attributes.disabled!false>
     disabled="disabled"<#rt/>
    </#if>
    <#if attributes.readonly!false>
     readonly="readonly"<#rt/>
    </#if>
    <#if attributes.tabindex?has_content>
     tabindex="${attributes.tabindex}"<#rt/>
    </#if>
    <#if attributes.id?has_content>
     id="${attributes.id}"<#rt/>
    </#if>
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
    <#if attributes.title?has_content>
     title="${attributes.title}"<#rt/>
    </#if>
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" /><#rt/>
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" /><#rt/>
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" /><#rt/>
    /><#rt/>
    <#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#rt/>

## Since

Available since Struts 7.2.0

Follow @x