1. 程式人生 > >將輸入框,下拉列表,radio的資料傳遞到後臺的2種方式

將輸入框,下拉列表,radio的資料傳遞到後臺的2種方式

#1 jqueryAjax的方式

通過jqueryAjax的方式將資料傳遞到後臺,這種方式適用於前臺的資料容易使用jquery獲取js獲取、資料較少的情況下。

具體方式:

#a,在“提交”的button上加一個onclick事件,該事件執行一個js方法

#b,在js方法內寫jqueryAjax格式的程式碼

#c,獲取type,url,dataType,data,success等引數。

如果只是為了將前臺填寫的資料,傳遞到後臺儲存的話,就可以如下設定:

#type:'POST'

#url:'action方法的url'

#dataType:‘text’

#data:{"name":"admin","age":13}

#success:function(result){}

如果希望通過jqueryAjax的方式從後臺查詢資料的話,就不能這樣使用了,採用Json格式會更方便一些

示例程式碼:

function editPassword(){
$.ajax(
{
type:"POST",
url:"/SmartPlatform/userOrderInfo/editPassword",
dataType:"text",
data:{
oldPassword:$("#oldPassword").val(),
newPassword:$("#newPassword").val(),
reNewPassword:$("#reNewPassword").val()
},
success:function(result){
alert(result);
}
});
}

說明:由於這裡的修改密碼的功能,只有3個input輸入框,資料較少,這樣就比較方便。

#2使用Struts2的物件模型

這種情況下適用於前臺填寫的資料比較多,使用jqueryAjax時,而且有些標籤的資料獲取比較麻煩,導致data中傳遞的資料量較大時,可以採用struts2的物件模型,更方便些。

具體方式:

#a,前臺頁面的資料必須採用form表單的submit提交

#b,在後臺action中設定要提交的資料所屬物件的屬性,並提供set和get方法

#c,提交按鈕必須定義為type=“submit”

#d,前臺form表單內想要提交資料的標籤,都必須有name屬性,屬性值為,action定義的物件變數名.當前屬性名(如,action定義的變數為user,而當前標籤將要輸入user物件的name屬性值,就可以定義為:user.name)

示例程式碼:

<form action="/SmartPlatform/userOrderInfo/saveUserInfo_success" method="POST">
<tr>
<td>登陸名:</td>
<td><s:property value="#request.user.ULoginName"/>
<input type="hidden" name="userModel.ULoginName" value='<s:property value="#request.user.ULoginName"/>'/>
</td>
</tr>
<tr>
<td>真實姓名:</td>
<td><input type="text" name="userModel.UCname" id="UCname" value='<s:property value="#request.user.UCname"/>'/></td>
</tr>
<tr>
<td>英文名:</td>
<td><input type="text" name="userModel.UEname" id="UEname" value='<s:property value="#request.user.UEname"/>'/></td>
</tr>
<tr>
<td>性別:</td>
<td>
<s:if test='#request.user.USex==1'>
<s:select name="userModel.USex" list="#{'1':'男','0':'女'}"  theme="simple" value="1" >
</s:select> 
</s:if>
<s:else>
<s:select name="userModel.USex" list="#{'1':'男','0':'女'}"  theme="simple" value="0" >
</s:select> 
</s:else>
</td>
</tr>
<tr>
<td>出生日期:</td>
<td><input name="userModel.UBirthDay" type="text" class="laydate-icon" onclick="laydate()" value='<s:property value="#request.user.UBirthDay"/>'/></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="userModel.UEmail" value='<s:property value="#request.user.UEmail"/>'/></td>
</tr>
<tr>
<td>身份證號碼:</td>
<td>
<input type="text" name="userModel.UIdcard"  value='<s:property value="#request.user.UIdcard"/>'/>
</td>
</tr>
<tr>
<td>電話號碼:</td>
<td><input type="text" name="userModel.UMobileNo" value='<s:property value="#request.user.UMobileNo"/>'/></td>
</tr>
<tr>
<td>地址:</td>
<td><input type="text" name="userModel.UAddress" value='<s:property value="#request.user.UAddress"/>'/></td>
</tr>
<tr>
<td>角色:</td>
<td><s:property value="#request.user.URoleName"/></td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<input type="submit" class="dow" value="儲存" />
</td>
</tr>
</form>

action中定義的物件變數:

private SpUsers userModel;

public SpUsers getUserModel() {
return userModel;
}


public void setUserModel(SpUsers userModel) {
this.userModel = userModel;
}

請求的action方法:

public String saveUserInfo() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String loginName  = userModel.getULoginName();
//
SpUsers user = userOrderInfoService.getUserInfoByLoginName(loginName);
if(loginName!=null){
user.setUEname(userModel.getUEname());
user.setUCname(userModel.getUCname());
user.setUSex(Short.parseShort(userModel.getUSex().toString()));
user.setUBirthDay(userModel.getUBirthDay());
user.setUEmail(userModel.getUEmail());
user.setUIdcard(userModel.getUIdcard());
user.setUMobileNo(userModel.getUMobileNo());
user.setUAddress(userModel.getUAddress());
userOrderInfoService.update(user);
ServletActionContext.getContext().getSession().put("saveFlag",
"1");
}else{
ServletActionContext.getContext().getSession().put("saveFlag",
"0");
}

return "saveUserInfo";
}

另外:看到了該action方法中,在session域物件中放入了saveFlag標記,這是因為,當前action方法執行完之後,其結果集轉成了另外一個action方法去初始化頁面的資料,然後轉向目標頁面,將這個標記放入session中就是為了能在另一個action方法中獲取這個標記,然後放入request域中,那麼就可以在目標頁面中獲取了。目標頁面根據這個saveFlag標記就知道儲存的狀態了,

目標jsp頁面獲取saveFlag標記:

<%

String isSave=(String)request.getAttribute("saveFlag"); //必須要強轉,從request屬性域中獲取,而不是獲取request.getParamer();
%>

目標頁面的初始化方法:

function initIsSave(){
var is=<%=isSave%>;
if("1"==is){
layer.msg('success!',2,1);
}else if("0"==is){
layer.msg('fail!',2,1);
}
}