1. 程式人生 > >Struts2報錯:No result defined for *action and result input

Struts2報錯:No result defined for *action and result input

這裡的報錯有很多種情況,這裡只說其中一個小分支。
首先,這個報錯肯定是這個action發生了內部錯誤,然後自動轉去名為input的result,之後發現你沒有定義名為input的result而報錯。

作為struts2的新手,在對應method裡設定斷點,但發現根本就沒有進入那個method。

這裡寫圖片描述

也就是說,沒有進入方法ajaxViewCate,直接返回名為input的result了。

這是為什麼呢?自己也不會檢視更詳細的報錯資訊。只好不斷看部落格。

看到直接返回input可能是因為型別轉換失敗。
然後看了下有沒有兩個名字一樣的變數……
請求的URL是:

ohmygod?category
=BIRDS

而該action中有個變數:

 private Category category;

而且我為其設定了get、set方法。
於是,String轉Category失敗,就報錯了。(URL的category引數值獲取我是用ParameterAware的)

所以獲取從網頁輸入的資料時,一開始直接使用基本屬性獲取固然爽。(網頁中的name屬性值與action中某變數相同,且該變數有get、set方法),但之後如果在同一網頁中發生命名相同的衝突,感覺這是很難發現的。所以以後從客戶端獲取,儘量用模型驅動啦,也就是

public class AccountAction extends
ActionSupport implements ModelDriven<Account>

繼承ModelDriven這種方法。儘量不用基本屬性。