No result defined for action Struts2請求進入action之前就報錯

進入action之前就報錯
No result defined for action
基本上就是數據類型不能接收。比如,後臺定義的某個參數類型是Long,但是提交到後臺,傳過去的卻是一個無法轉換成Long類型的String,那肯定就報錯撒。

首先,請求是通過表單提交的方式,代碼如下:

var cabinetId = 99;//這裏寫總結,隨便弄個值
document.forms[0].action = "updateCabinet.action?cabinetId="+cabinetId;
document.forms[0].submit();

原因是,在jsp中有name="cabinetId"的標籤:

action代碼:
		private Long cabinetId;
jsp代碼:
		<s:form id="form"  theme="simple">
			<s:hidden id="agentId" name="agentId"/>
			**<s:hidden id="cabinetId" name="cabinetId"/>**
			<s:hidden id="roomId" name="roomId"/>
			<s:hidden id="boxId" name="containerBox.id"/>
			<s:hidden id="functionId"  name="functionId"/>
			<table width="100%" cellpadding="0" cellspacing="0" border="0">

所以在url中給後臺傳cabinetId的同時,表單也提交了cabinetId這個變量,此時後臺接收的cabinetId其實有兩個值(即使jsp裏的標籤沒有值,也會傳一個""),而且後臺會把兩個值用逗號隔開,並賦值給cabinetId=“99,”;由於cabinetId是Long類型的,所以報錯。
解決方法有兩個:
1、把url後的變量傳值去掉,

document.forms[0].action = "updateCabinet.action";
document.forms[0].submit();

2、或者把name="cabinetId"的標籤去掉。
第一次寫博客,留個彩蛋把。
彩蛋:如果後臺接收的變量類型是String的話,是不會報錯滴。然後當你的代碼有需要用到那個值的時候,就會很坑咯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章