实现跳转逻辑可以在TriangleAction的catch块内实现,返回名为"input"的结果,同时设置ActionForm的回显。
时间: 2024-09-19 18:07:43 浏览: 20
在TriangleAction的`calculateArea`方法中,如果遇到不能构成三角形的情况,比如输入的边长不符合规则,你可以使用`throw new Exception("Invalid input!");`抛出异常。当这种异常被捕获时,Struts2默认的行为是终止当前的动作链,并按照异常处理器(ExceptionHandler)配置的规则进行下一步操作。
在这里,你可以自定义异常处理器(通常放在struts.xml文件中的`global-results`标签下),指定处理Exception动作的结果名为"input"。例如:
```xml
<global-results>
<result name="input" type="redirectAction">triangleCalculator.input</result>
</global-results>
```
接下来,在`catch (Exception e)`块中,你可以获取到ActionForm的引用`form`,然后使用`form.setAttribute("sideA", ...); form.setAttribute("sideB", ...);`等方法设置回显字段的值,以便于用户看到之前的输入。然后,直接返回该结果名,如`return "input";`,这样就会跳转回初始的输入页面。
完整的Action类代码段可能会像这样:
```java
try {
// 计算和逻辑
} catch (Exception e) {
form.setAttribute("sideA", form.getSideA()); // 设置回显
form.setAttribute("sideB", form.getSideB());
form.setAttribute("sideC", form.getSideC());
return "input";
}
```
阅读全文