Files
struts2-demo/web/WEB-INF/views/validation/success.jsp

103 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>校验结果汇总 - Struts2 学习实验台</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
font-family: "Aptos", "Segoe UI", "Microsoft YaHei", sans-serif;
background: linear-gradient(135deg, #db2777 0%, #f472b6 55%, #ffe4f1 100%);
}
.card {
width: min(860px, 100%);
background: rgba(255,255,255,0.95);
border-radius: 28px;
padding: 28px;
box-shadow: 0 24px 60px rgba(0,0,0,0.18);
}
.eyebrow {
font-size: 12px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #db2777;
font-weight: 800;
}
h1 { margin: 10px 0 12px; }
p { margin: 0; color: #6a5060; line-height: 1.85; }
.stats {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
margin-top: 18px;
}
.stat {
padding: 16px;
border-radius: 18px;
background: #fff5fa;
border: 1px solid #f1d8e5;
}
.stat span { display: block; font-size: 12px; color: #8a697b; margin-bottom: 6px; }
.stat strong { font-size: 18px; }
.links { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.link-btn {
display: inline-flex;
padding: 10px 14px;
border-radius: 999px;
background: #fff0f7;
color: #db2777;
text-decoration: none;
font-weight: 700;
}
@media (max-width: 720px) {
.stats { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<div class="card">
<div class="eyebrow">校验通过</div>
<h1>所有输入都满足当前 Action 的校验规则</h1>
<p>这页的价值在于把字段校验和业务执行分开解释。只有当所有字段都通过时Action 才会进入成功结果页。</p>
<div class="stats">
<div class="stat"><span>用户名</span><strong><s:property value="username"/></strong></div>
<div class="stat"><span>邮箱</span><strong><s:property value="email"/></strong></div>
<div class="stat"><span>年龄</span><strong><s:property value="age"/></strong></div>
<div class="stat">
<span>阶段判断</span>
<strong><s:if test="seniorTrack">中阶段运维画像</s:if><s:else>早阶段运维画像</s:else></strong>
</div>
<div class="stat"><span>提交时间</span><strong><s:property value="submittedAt"/></strong></div>
<div class="stat"><span>简介</span><strong><s:property value="bio" default="未填写简介"/></strong></div>
</div>
<div class="links">
<a class="link-btn" href="../validationPage.action">重新做一次校验</a>
<a class="link-btn" href="../dashboard.action">返回仪表盘</a>
</div>
<div class="stats">
<div class="stat">
<span>规则入口</span>
<strong>validate()</strong>
先校验,再决定是否允许执行 <code>execute()</code>。
</div>
<div class="stat">
<span>教学重点</span>
<strong>输入先于业务</strong>
这正是传统 Struts2 表单页面里最值得讲清楚的部分。
</div>
</div>
</div>
</body>
</html>