feat(interactive): enhance struts learning pages with task cards and quick experiments

This commit is contained in:
likingcode
2026-03-09 23:57:50 +08:00
commit 0bbfdd1d7a
14 changed files with 941 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
package com.example.struts2;
import com.opensymphony.xwork2.ActionSupport;
/**
* 计算器 Action - 表单处理示例
*
* 学习点:
* - Action 接收表单参数(通过 setter
* - 数据验证validate 方法)
* - 结果类型
*/
public class CalculatorAction extends ActionSupport {
private Double num1;
private Double num2;
private String operator;
private Double result;
// 默认执行方法
public String execute() {
return SUCCESS;
}
// 计算方法
public String calculate() {
if (num1 == null || num2 == null || operator == null) {
return INPUT;
}
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
addFieldError("num2", "除数不能为0");
return INPUT;
}
result = num1 / num2;
break;
default:
return INPUT;
}
return SUCCESS;
}
// 验证方法
@Override
public void validate() {
if (num1 == null) {
addFieldError("num1", "请输入第一个数字");
}
if (num2 == null) {
addFieldError("num2", "请输入第二个数字");
}
}
// Getter and SetterStruts2 通过这些接收参数)
public Double getNum1() { return num1; }
public void setNum1(Double num1) { this.num1 = num1; }
public Double getNum2() { return num2; }
public void setNum2(Double num2) { this.num2 = num2; }
public String getOperator() { return operator; }
public void setOperator(String operator) { this.operator = operator; }
public Double getResult() { return result; }
public void setResult(Double result) { this.result = result; }
}