如何处理Struts 2中未映射的动作以重定向到一些合适的错误页面?

时间:2018-09-03 18:10:43

标签: java servlets struts2 struts

我正在寻找一个解决方案,其中我在struts.xml中没有操作URL,但是如果我访问该URL,那么我不希望提供struts错误日志,而是希望将其重定向到任何自定义和合适的错误页面。 / p>

1 个答案:

答案 0 :(得分:0)

全局异常处理

如果要显示所有错误的错误页面,请使用全局异常处理,如here所述。

默认是使用类似这样的东西:

extension SelectCategoryViewController: UITableViewDelegate,UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return CategeryArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell")!
        cell.textLabel?.text = self.CategeryArray[indexPath.row]

        if self.CategeryArray[indexPath.row] == self.selectedCategoryValue {
            cell.accessoryType = .checkmark
        } else {
            cell.accessoryType = .none
        } 

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
        self.selectedCategoryValue = CategeryArray[indexPath.row]
        self.tableView.reloadData()
    }
}

通配符映射

或者,如果您只想处理未知的动作名称,则可以使用解释为here的通配符映射。

解决方案可能是:

<global-results>
    <result name="error">/error.jsp</result>
</global-results>

<global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>

请确保将通配符操作放在struts配置的顶部,因为“最后一个获胜”。