This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch WW-5653-bootstrap5-sample-apps
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 31e23e12eb27ce26828ea8885b3ce97a120d71dd
Author: Lukasz Lenart <[email protected]>
AuthorDate: Sat Jul 18 06:22:38 2026 +0200

    WW-5653 feat(showcase): migrate navbar and top-level pages to Bootstrap 5
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
---
 .../actionchaining/actionChainingResult.jsp        |   2 +-
 .../WEB-INF/bean-validation/bean-validation.jsp    |   2 +-
 .../src/main/webapp/WEB-INF/decorators/main.jsp    | 144 ++++++++++-----------
 .../webapp/WEB-INF/dispatcher/dispatch-result.jsp  |   2 +-
 .../src/main/webapp/WEB-INF/filedownload/index.jsp |   2 +-
 apps/showcase/src/main/webapp/WEB-INF/help.jsp     |   6 +-
 .../src/main/webapp/WEB-INF/html5/index.jsp        |  12 +-
 .../webapp/WEB-INF/modelDriven/modelDriven.jsp     |   2 +-
 .../WEB-INF/modelDriven/modelDrivenResult.jsp      |   2 +-
 .../src/main/webapp/WEB-INF/person/edit-person.jsp |   2 +-
 apps/showcase/src/main/webapp/WEB-INF/showcase.jsp |   2 +-
 .../src/main/webapp/WEB-INF/tiles/header.jsp       |   2 +-
 12 files changed, 89 insertions(+), 91 deletions(-)

diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
index cf19dc1d8..3682860d7 100644
--- 
a/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
+++ 
b/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
@@ -25,7 +25,7 @@
     <title>Struts2 Showcase - Action Chaining Result</title>
 </head>
 <body>
-    <div class="page-header">
+    <div class="border-bottom pb-2 mb-3">
            <h1>Action Chaining Result:</h1>
     </div>
 
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
index 11d9c724c..8a8104058 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/bean-validation/bean-validation.jsp
@@ -26,7 +26,7 @@
 </head>
 <body>
 
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
     <h1>Bean Validation Examples</h1>
 </div>
 
diff --git a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
index 4fe7f8dcc..9f1b66288 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
@@ -97,14 +97,12 @@
 
 <body id="page-home">
 
-<nav class="navbar navbar-default navbar-fixed-top">
+<nav class="navbar navbar-expand-lg navbar-light bg-light navbar-fixed-top">
     <div class="container-fluid">
 
         <div class="navbar-header">
-            <button type="button" class="navbar-toggle collapsed" 
data-toggle="collapse" data-target="#navbar" aria-expanded="false" 
aria-controls="navbar">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
+            <button class="navbar-toggler" type="button" 
data-bs-toggle="collapse" data-bs-target="#navbar-main" 
aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle 
navigation">
+                <span class="navbar-toggler-icon"></span>
             </button>
             <s:url var="home" action="showcase" namespace="/" 
includeContext="false" />
             <s:a value="%{home}" cssClass="navbar-brand">
@@ -112,98 +110,98 @@
             </s:a>
         </div>
 
-        <div id="navbar" class="navbar-collapse collapse">
+        <div class="collapse navbar-collapse" id="navbar-main">
                 <ul class="nav navbar-nav">
-                    <li><s:a value="%{home}"><i class="glyphicon 
glyphicon-home"></i> Home</s:a></li>
+                    <li><s:a value="%{home}"><i class="bi bi-house"></i> 
Home</s:a></li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">
-                            <i class="glyphicon glyphicon-cog"></i> 
Configuration
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">
+                            <i class="bi bi-gear"></i> Configuration
                             <b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <li><s:a action="actionChain1!input" 
namespace="/actionchaining"
-                                     includeParams="none">Action 
Chaining</s:a></li>
+                                     includeParams="none" 
cssClass="dropdown-item">Action Chaining</s:a></li>
                             <li><s:a action="index" namespace="/config-browser"
-                                     includeParams="none">Config 
Browser</s:a></li>
+                                     includeParams="none" 
cssClass="dropdown-item">Config Browser</s:a></li>
                             <s:url var="conversion" action="index" 
namespace="/conversion" includeContext="false" />
-                            <li><s:a 
value="%{conversion}">Conversion</s:a></li>
-                            <li><s:a value="/person/index.html">Person Manager 
( by Conventions )</s:a></li>
+                            <li><s:a value="%{conversion}" 
cssClass="dropdown-item">Conversion</s:a></li>
+                            <li><s:a value="/person/index.html" 
cssClass="dropdown-item">Person Manager ( by Conventions )</s:a></li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Non UI Tags<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">Non UI Tags<b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <li><s:url var="url" action="showActionTagDemo" 
namespace="/tags/non-ui/actionTag"/>
-                                <s:a href="%{url}">Action Tag</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Action Tag</s:a></li>
                             <li><s:url var="url" namespace="/tags/non-ui" 
action="date"/>
-                                <s:a href="%{url}">Date Tag</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Date Tag</s:a></li>
                             <li><s:url var="url" action="debugTagDemo" 
namespace="/tags/non-ui"/>
-                                <s:a href="%{url}">Debug Tag</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Debug Tag</s:a></li>
                             <li><s:url var="url" action="showGeneratorTagDemo" 
namespace="/tags/non-ui/iteratorGeneratorTag"/>
-                                <s:a href="%{url}">Iterator Generator 
Tag</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Iterator Generator Tag</s:a></li>
                             <li>
                                 <s:url var="url" action="showAppendTagDemo" 
namespace="/tags/non-ui/appendIteratorTag"/>
-                                <s:a href="%{#url}">Append Iterator Tag</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Append Iterator Tag</s:a>
                             <li>
                                 <s:url var="url" action="showMergeTagDemo" 
namespace="/tags/non-ui/mergeIteratorTag"/>
-                                <s:a href="%{#url}">Merge Iterator Demo</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Merge Iterator Demo</s:a>
                             <li>
                                 <s:url var="url" action="showSubsetTagDemo" 
namespace="/tags/non-ui/subsetIteratorTag"/>
-                                <s:a href="%{#url}">Subset Tag</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Subset Tag</s:a>
                             <li><s:url var="url" 
action="actionPrefixExampleUsingFreemarker" 
namespace="/tags/non-ui/actionPrefix"/>
-                                <s:a href="%{#url}">Action Prefix Example 
(Freemarker)</s:a></li>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Action Prefix Example (Freemarker)</s:a></li>
                             <li><s:url var="url" action="testIfTagJsp" 
namespace="/tags/non-ui/ifTag"/>
-                                <s:a href="%{#url}">If Tag (JSP)</s:a></li>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">If Tag (JSP)</s:a></li>
                             <li><s:url var="url" action="testIfTagFreemarker" 
namespace="/tags/non-ui/ifTag"/>
-                                <s:a href="%{#url}">If Tag 
(Freemarker)</s:a></li>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">If Tag (Freemarker)</s:a></li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">UI Tags<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">UI Tags<b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <li><s:url var="url" namespace="/tags/ui" 
action="example" method="input"/>
-                                <s:a href="%{url}">UI Example</s:a></li>
+                                <s:a href="%{url}" cssClass="dropdown-item">UI 
Example</s:a></li>
                             <li><s:url var="url" namespace="/tags/ui" 
action="exampleVelocity" method="input"/>
-                                <s:a href="%{url}">UI Example 
(Velocity)</s:a></li>
+                                <s:a href="%{url}" cssClass="dropdown-item">UI 
Example (Velocity)</s:a></li>
                             <li><s:url var="url" namespace="/tags/ui" 
action="lotsOfOptiontransferselect" method="input"/>
-                                <s:a href="%{url}">Option Transfer Select UI 
Example</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Option Transfer Select UI Example</s:a></li>
                             <li><s:url var="url" namespace="/tags/ui" 
action="moreSelects" method="input"/>
-                                <s:a href="%{url}">More Select Box UI 
Examples</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">More Select Box UI Examples</s:a></li>
                             <li>
                                 <s:url var="url" namespace="/tags/ui" 
action="componentTagExample"/>
-                                <s:a href="%{#url}">Component Tag 
Example</s:a></li>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Component Tag Example</s:a></li>
                             <li><s:url var="url" namespace="/tags/ui" 
action="actionTagExample" method="input"/>
-                                <s:a href="%{url}">Action Tag 
Example</s:a></li>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Action Tag Example</s:a></li>
                             <li><s:url var="url" action="index"  
namespace="/html5"/>
-                                <s:a href="%{#url}">Html 5 theme</s:a></li>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Html 5 theme</s:a></li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">
-                            <i class="glyphicon glyphicon-file"></i> File
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">
+                            <i class="bi bi-file-earmark"></i> File
                             <b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
-                            <li><s:a namespace="/filedownload" 
action="index">File Download</s:a></li>
+                            <li><s:a namespace="/filedownload" action="index" 
cssClass="dropdown-item">File Download</s:a></li>
                             <li>
                                 <s:url var="url" action="upload" 
namespace="/fileupload"/>
-                                <s:a href="%{#url}">Single File Upload</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Single File Upload</s:a>
                             </li>
                             <li>
                                 <s:url var="url" action="dynamicUpload" 
namespace="/fileupload"/>
-                                <s:a href="%{#url}">Single File Upload - 
dynamic config</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Single File Upload - dynamic config</s:a>
                             </li>
                             <li>
                                 <s:url var="url" 
action="multipleUploadUsingList" namespace="/fileupload"/>
-                                <s:a href="%{#url}">Multiple File Upload 
(List)</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Multiple File Upload (List)</s:a>
 
                             </li>
                             <li>
                                 <s:url var="url" 
action="multipleUploadUsingArray" namespace="/fileupload"/>
-                                <s:a href="%{#url}">Multiple File Upload 
(Array)</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Multiple File Upload (Array)</s:a>
                             </li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Validation<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">Validation<b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <s:url var="quizBasic" namespace="/validation" 
action="quizBasic" method="input"/>
                             <s:url var="quizClient" namespace="/validation" 
action="quizClient" method="input"/>
@@ -216,65 +214,65 @@
                             <s:url var="storeMessageAcrossRequestExample" 
namespace="/validation" action="storeErrorsAcrossRequestExample"/>
                             <s:url var="beanValidationUrl" 
action="bean-validation" namespace="/bean-validation"/>
                             <s:url var="ajaxFormSubmitUrl" 
action="ajaxFormSubmit" namespace="/validation" method="input"/>
-                            <li><s:a href="%{beanValidationUrl}">Bean 
Validation</s:a></li>
-                            <li><s:a href="%{fieldValidatorUrl}">Field 
Validators</s:a></li>
-                            <li><s:a href="%{clientSideValidationUrl}">Field 
Validators with client-side JavaScript</s:a></li>
-                            <li><s:a href="%{nonFieldValidatorUrl}">Non Field 
Validator</s:a></li>
-                            <li><s:a 
href="%{storeMessageAcrossRequestExample}">Store across request using 
MessageStoreInterceptor (Example)</s:a></li>
-                            <li><s:a href="%{quizBasic}">Validation 
(basic)</s:a></li>
-                            <li><s:a href="%{quizClient}">Validation 
(client)</s:a></li>
-                            <li><s:a href="%{quizClientCss}">Validation 
(client using css_xhtml theme)</s:a></li>
-                            <li><s:a href="%{visitorValidatorUrl}">Visitor 
Validator</s:a></li>
-                            <li><s:a href="%{ajaxFormSubmitUrl}">AJAX Form 
Submit</s:a></li>
+                            <li><s:a href="%{beanValidationUrl}" 
cssClass="dropdown-item">Bean Validation</s:a></li>
+                            <li><s:a href="%{fieldValidatorUrl}" 
cssClass="dropdown-item">Field Validators</s:a></li>
+                            <li><s:a href="%{clientSideValidationUrl}" 
cssClass="dropdown-item">Field Validators with client-side JavaScript</s:a></li>
+                            <li><s:a href="%{nonFieldValidatorUrl}" 
cssClass="dropdown-item">Non Field Validator</s:a></li>
+                            <li><s:a 
href="%{storeMessageAcrossRequestExample}" cssClass="dropdown-item">Store 
across request using MessageStoreInterceptor (Example)</s:a></li>
+                            <li><s:a href="%{quizBasic}" 
cssClass="dropdown-item">Validation (basic)</s:a></li>
+                            <li><s:a href="%{quizClient}" 
cssClass="dropdown-item">Validation (client)</s:a></li>
+                            <li><s:a href="%{quizClientCss}" 
cssClass="dropdown-item">Validation (client using css_xhtml theme)</s:a></li>
+                            <li><s:a href="%{visitorValidatorUrl}" 
cssClass="dropdown-item">Visitor Validator</s:a></li>
+                            <li><s:a href="%{ajaxFormSubmitUrl}" 
cssClass="dropdown-item">AJAX Form Submit</s:a></li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Examples<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">Examples<b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <li class="dropdown-submenu">
                             <li>
                                 <s:url var="url" namespace="/hangman" 
action="hangmanNonAjax"/>
-                                <s:a href="%{url}">Hangman</s:a>
+                                <s:a href="%{url}" 
cssClass="dropdown-item">Hangman</s:a>
                             </li>
-                            <li><s:a value="/person/index.html">Person 
Manager</s:a></li>
-                            <li><s:a value="/skill/index.html">CRUD</s:a></li>
-                            <li><s:a value="/wait/index">Execute &amp; 
Wait</s:a></li>
-                            <li><s:a value="/token/index.html">Token</s:a></li>
-                            <li><s:url var="url" namespace="/modelDriven" 
action="modelDriven"/><s:a
+                            <li><s:a value="/person/index.html" 
cssClass="dropdown-item">Person Manager</s:a></li>
+                            <li><s:a value="/skill/index.html" 
cssClass="dropdown-item">CRUD</s:a></li>
+                            <li><s:a value="/wait/index" 
cssClass="dropdown-item">Execute &amp; Wait</s:a></li>
+                            <li><s:a value="/token/index.html" 
cssClass="dropdown-item">Token</s:a></li>
+                            <li><s:url var="url" namespace="/modelDriven" 
action="modelDriven"/><s:a cssClass="dropdown-item"
                                     href="%{url}">Model Driven</s:a></li>
-                            <li><s:a value="/async/index.html">Async</s:a></li>
-                            <li><s:a 
value="/dispatcher/dispatch.action">Dispatcher result - dispatch</s:a></li>
-                            <li><s:a 
value="/dispatcher/forward.action">Dispatcher result - forward</s:a></li>
+                            <li><s:a value="/async/index.html" 
cssClass="dropdown-item">Async</s:a></li>
+                            <li><s:a value="/dispatcher/dispatch.action" 
cssClass="dropdown-item">Dispatcher result - dispatch</s:a></li>
+                            <li><s:a value="/dispatcher/forward.action" 
cssClass="dropdown-item">Dispatcher result - forward</s:a></li>
                         </ul>
                     </li>
                     <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Integration<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">Integration<b class="caret"></b></a>
                         <ul class="dropdown-menu" role="menu">
                             <li>
                                 <s:url var="url" 
action="customFreemarkerManagerDemo" namespace="/freemarker"/>
-                                <s:a href="%{#url}">Demo of usage of a Custom 
Freemarker Manager</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Demo of usage of a Custom Freemarker Manager</s:a>
                             </li>
                             <li>
                                 <s:url var="url" action="standardTags" 
namespace="/freemarker"/>
-                                <s:a href="%{#url}">Demo of Standard Struts 
Freemarker Tags</s:a>
+                                <s:a href="%{#url}" 
cssClass="dropdown-item">Demo of Standard Struts Freemarker Tags</s:a>
                             </li>
-                            <li><s:a 
value="/tiles/index.action">Tiles</s:a></li>
+                            <li><s:a value="/tiles/index.action" 
cssClass="dropdown-item">Tiles</s:a></li>
                         </ul>
                     </li>
                 </ul>
 
-                <ul class="nav navbar-nav pull-right">
+                <ul class="nav navbar-nav float-end">
                     <li class="dropdown last">
-                        <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">
-                            <i class="glyphicon glyphicon-question-sign"></i> 
Help<b class="caret"></b></a>
+                        <a href="#" class="nav-link dropdown-toggle" 
data-bs-toggle="dropdown">
+                            <i class="bi bi-question-circle"></i> Help<b 
class="caret"></b></a>
                         <ul class="dropdown-menu">
                             <s:url var="help" action="help" namespace="/" 
includeContext="false" />
-                            <li><s:a value="%{help}">Help</s:a></li>
-                            <li><a 
href="http://struts.apache.org/mail.html";><i class="icon-share"></i> User 
Mailing
+                            <li><s:a value="%{help}" 
cssClass="dropdown-item">Help</s:a></li>
+                            <li><a href="http://struts.apache.org/mail.html"; 
class="dropdown-item"><i class="icon-share"></i> User Mailing
                                 List</a></li>
-                            <li><a href="http://struts.apache.org";><i 
class="icon-share"></i> Struts2 Website</a>
+                            <li><a href="http://struts.apache.org"; 
class="dropdown-item"><i class="icon-share"></i> Struts2 Website</a>
                             </li>
-                            <li><a 
href="http://struts.apache.org/docs/home.html";><i class="icon-share"></i>
+                            <li><a 
href="http://struts.apache.org/docs/home.html"; class="dropdown-item"><i 
class="icon-share"></i>
                                 Documentation</a></li>
                         </ul>
                     </li>
@@ -295,7 +293,7 @@
     </div>
 
 
-    <div class="pull-right">
+    <div class="float-end">
         <div>
             <s:action var="dateAction" name="date" namespace="/" 
executeResult="true"/>
         </div>
@@ -310,7 +308,7 @@
         <!-- end search -->
     </div>
 
-    <div class="pull-left">
+    <div class="float-start">
         Copyright &copy; 2003-<s:property value="#dateAction.now.year + 1900"/>
         <a href="https://www.apache.org";>The Apache Software Foundation.</a>
     </div>
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/dispatcher/dispatch-result.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/dispatcher/dispatch-result.jsp
index d493b146b..521285cec 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/dispatcher/dispatch-result.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/dispatcher/dispatch-result.jsp
@@ -27,7 +27,7 @@
 </head>
 <body>
 
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
     <h1>Dispatcher Result Example</h1>
 </div>
 
diff --git a/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
index ac1082d20..4080c6dc7 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
@@ -25,7 +25,7 @@
 </head>
 
 <body>
-       <div class="page-header">
+       <div class="border-bottom pb-2 mb-3">
                <h1>File Download Example</h1>
        </div>
 
diff --git a/apps/showcase/src/main/webapp/WEB-INF/help.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/help.jsp
index 96146bfd1..18dac37b6 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/help.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/help.jsp
@@ -25,7 +25,7 @@
 </head>
 
 <body>
-       <div class="page-header">
+       <div class="border-bottom pb-2 mb-3">
                <h1>Getting support</h1>
        </div>
 
@@ -39,13 +39,13 @@
                                <div class="alert alert-info">
                                        Use this mailing list if you encounter 
problems while developing and using with Struts.
                                </div>
-                               <a href="http://struts.apache.org/mail.html"; 
class="btn btn-large btn-info"><i class="glyphicon glyphicon-share"></i> User 
List</a>
+                               <a href="http://struts.apache.org/mail.html"; 
class="btn btn-large btn-info"><i class="bi bi-share"></i> User List</a>
                        </div>
                        <div class="col-md-4" style="text-align: center;">
                                <div class="alert alert-info">
                                        The Struts 2 website.
                                </div>
-                               <a href="http://struts.apache.org"; class="btn 
btn-large btn-info"><i class="glyphicon glyphicon-share"></i> Struts 2</a>
+                               <a href="http://struts.apache.org"; class="btn 
btn-large btn-info"><i class="bi bi-share"></i> Struts 2</a>
                </div>
        </div>
 </body>
diff --git a/apps/showcase/src/main/webapp/WEB-INF/html5/index.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/html5/index.jsp
index 1bab19d54..af7ddb021 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/html5/index.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/html5/index.jsp
@@ -34,7 +34,7 @@
 <div class="container-fluid">
     <div class="row">
         <div class="col-md-12">
-            <div class="hero-unit">
+            <div class="p-5 mb-4 bg-light rounded-3">
                 <h1>Html 5 tags demo</h1>
                 <p>All the tags on this page are from <i>html5</i> theme. <s:a 
theme="html5" action="showcase" namespace="/">Back</s:a> to main Showcase App 
page</p>
             </div>
@@ -44,7 +44,7 @@
     <!-- Section 1: Link Components -->
     <div class="row">
         <div class="col-md-12">
-            <div class="page-header">
+            <div class="border-bottom pb-2 mb-3">
                 <h2>Link Components</h2>
             </div>
         </div>
@@ -61,7 +61,7 @@
     <!-- Section 2: Error & Message Components -->
     <div class="row">
         <div class="col-md-12">
-            <div class="page-header">
+            <div class="border-bottom pb-2 mb-3">
                 <h2>Error &amp; Message Components</h2>
             </div>
         </div>
@@ -94,7 +94,7 @@
     <!-- Section 3: Form Components -->
     <div class="row">
         <div class="col-md-12">
-            <div class="page-header">
+            <div class="border-bottom pb-2 mb-3">
                 <h2>Form Components</h2>
             </div>
         </div>
@@ -211,7 +211,7 @@
     <!-- Section 4: Advanced Selection Components -->
     <div class="row">
         <div class="col-md-12">
-            <div class="page-header">
+            <div class="border-bottom pb-2 mb-3">
                 <h2>Advanced Selection Components</h2>
             </div>
         </div>
@@ -228,7 +228,7 @@
     <!-- Section 5: Utility & Display Components -->
     <div class="row">
         <div class="col-md-12">
-            <div class="page-header">
+            <div class="border-bottom pb-2 mb-3">
                 <h2>Utility &amp; Display Components</h2>
             </div>
         </div>
diff --git a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
index 075073ccf..1351b5265 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
@@ -27,7 +27,7 @@
 
 <body>
 
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
        <h1>Model Driven Example</h1>
 </div>
 
diff --git 
a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
index 97bc75ef3..35176dfe4 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
@@ -34,7 +34,7 @@
 
 <body>
 
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
        <h1>Model Driven Example - Result</h1>
 </div>
 
diff --git a/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
index a301c69c1..909297c41 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
@@ -24,7 +24,7 @@
        <title>Struts2 Showcase - Person Manager Example</title>
 </head>
 <body>
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
        <h1>Person Manager Example</h1>
 </div>
 
diff --git a/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
index 92c1bfd60..043947ce2 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
@@ -36,7 +36,7 @@
                <div class="row">
                        <div class="col-md-12">
 
-                               <div class="hero-unit">
+                               <div class="p-5 mb-4 bg-light rounded-3">
                                        <h1>Welcome!</h1>
                                        <p>The Struts Showcase demonstrates a 
variety of use cases and tag usages. Essentially, the application exercises 
various framework features in isolation. The Showcase is not meant as a "best 
practices" example.</p>
                                        <p>For more "by example" solutions, see 
the <a href="https://github.com/apache/struts-examples"; class="btn btn-primary 
btn-large">Struts Examples &raquo;</a> pages.</p>
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp 
b/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
index 283d06276..a2f418db5 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
@@ -18,6 +18,6 @@
 * under the License.
 */
 -->
-<div class="page-header">
+<div class="border-bottom pb-2 mb-3">
        <h1>${title}</h1>
 </div>

Reply via email to