天天看點

Struts2:No result defined for action XXX and result input

<div class="row-fluid filearea_div">
					<div class="span9">
						<input type="text" name="appImg2" id="appImg2_2"  />
					</div>
					<div class="span2">
						 <input type="button" value="<fmt:message
						key='appManage.appLibraryForm.btn.open' />"/>
					</div>
					<s:file name="appImg2" id="file_appImg2_2" cssClass="filearea_file"
							οnchange="return setFileName('file_appImg2_2','appImg2_2')" />
				</div>
           

一般遇到這種錯誤,是因為表單字段與背景action類中字段類型不一緻、名稱不一緻、值為空等會導緻這種錯誤

字段類型不一緻、名稱不一緻要好好查查表單字段是不是字段名否不一緻或重複了?

像上面,我的背景action中是:

private List<File>  appImg=new ArrayList<File>(); //get set方法省略
           

粗心大意在複制粘貼的時候忘記了應該是<s:file name="appImg" />,導緻了字段名不一緻。

同樣的,在使用<s:file>标簽時,因為我的應用添加、應用編輯表單是使用的同一個表單,在編輯的時候,我并沒有打算更換應用截圖appImg,是以自然也就沒有選擇圖檔檔案,然後送出了action,因為<s:file>标簽中并沒有檔案,action中的appImg 這個List的值自然就是null了。這時候背景會報:No result defined for action save and result input。

而你在save方法中打了一個斷點,然後喜聞樂見的發現,程式根本就沒辦法走到斷點那裡……

因為在屬性get set的時候,背景已經挂了。這時候應該在get set方法裡打斷點,但是那麼多get set 方法 難道一個個去設斷點?

總的來說,當你确認你的字段名一緻、字段屬性一緻且你知道你的某些字段在如編輯場合的時候可能為空時,你可以嘗試使用:

<result name="input" type="redirectAction">application</result>
           

input這個方法可以屏蔽No result defined for action save and result 這個錯誤,像我一樣在使用<s:file>标簽時肯定不希望編輯的時候還要把每個檔案都再上傳一遍,也懶得将添加編輯分開來……加了這個之後,隻需要在如save方法中判斷下appImg是不是為空。