如何傳參,如何獲取參數,如何調用參數

今天遇到一個小疑問,大神們勿噴!!!
本人負責的項目需要一個參數worksId,不過我是不可以直接獲取這個參數的,需要我上個頁面的負責人
將這個參數傳給我,然後我纔可以調用worksId從而獲取數據庫信息。
現在有個疑問,worksId是如何傳給我的,我又是如何去調用的?






------------------------------------------


step1. 
先在js裏面或者FreeMarker裏面定義一個onclick單擊事件,比如定義的οnclick="getWorkDetails",
當上一個頁面的人點擊鼠標進入我的頁面時,觸發onclick事件.
step2.
第一步定義了一個onclick事件,現在給這個事件在js裏寫超鏈接轉向控制層。
function getWorkDetails(worksId){
window.location.href=jQuery.getBasePath() 
+ "/showIndex/toViewSite.bsh?siteTag=worksDetail&worksId="+worksId+"&siteId="+siteId;
}
step3.
第二步由window.location.href轉向了控制層controller,在controller中將參數worksId從request域中取出,
再將其存放到model中,進而轉向FreeMarker頁面。
public String toViewSite(HttpServletRequest request,String siteTag,String siteId ,Model model){
//轉發頁面的路徑字段
String viewDir="";
//從session裏面獲取uerInfo對象
Map<String,String> userInfo =(Map<String,String>)request.getSession().getAttribute("userInfo");
//先從userInfo中獲取id,判定當userInfo爲null時返回空,否則獲取userInfo中的id存放到model中
model.addAttribute("userId",userInfo == null?"":userInfo.get("id"));
model.addAttribute("siteId",siteId);
//從request域中獲取活動的id存放到model中
model.addAttribute("activityId",request.getParameter("activityId"));
switch(siteTag){
//這個是上一層的頁面
case "worksList"
model.addAttribute("siteId",siteId);
//其頁面需要一個參數activityId去獲取作品列表的信息
model.addAttribute("activityId",request.getParameter("activityId"));
//進入其頁面的路徑
viewDir ="xx/xxx/worksList.ftl";


case "workDetails"
//從其頁面轉向我的頁面需要的參數
model.addAttribute("siteId",siteId);
model.addAttribute("activityId",request.getParameter("activityId"));
model.addAttribute("worksId",request.getParameter("worksId"));
//獲取參數後轉向活動詳情的頁面
viewDir = "xx/xxx/worksDetail.ftl";
}
}


step4.
第三步從request域中獲得所需的worksId參數存放到model中,通過視圖轉向到ftl頁面
<input id="worksId" type="hidden" value="${worksId}" />
通過input將參數傳到頁面,至此就可以獲取參數worksId


step5.
Var worksId =$("#worksId").val();
通過var定義一個全局變量,獲取worksId


step6(如何調用這個參數)
//寫一個jquery中ajax調用參數的流程,譬如在getWorksList方法中調用參數
function getWorksList(worksId){
$.ajax({
type : "post",
DateType : "json",
url : getBasePath() + "/showIndex/getWorksListById.bsh",
//傳入參數
data : {
"worksId" : worksId
},
success : function (data) {
var worksMap =data.worksMap;
var objHtml ='';
//以下是拼接Html部分
objHtml +='...';
objHtml +='...'+worksMap.workAuthor+'';
}
$("#author").html(objHtml);


});
}


step7
//上方傳過來只是一個參數,並不能直接從數據庫中獲取數據,因此要在控制層controller中寫getWorksListById方法
public xx{
public JSONObject getWorksListById(HttpServletRequest request){
JSONObject json =new JSONObject();
try{
//將參數worksId存放到resultMap這個集合中
Map<String,Object> resultMap =showServiceI.getWorksListById("worksId");
json.put("success",true);
//success返回作品信息
json.put("worksMap",resultMap.get("worksMap"));
}catch(Exception e){
logger.error("獲取作品信息失敗",e);
json.put("success",fasle);
json.put("msg","獲取信息異常");
}
return json;
}
//serviceI接口
ShowServiceI showServiceI;
}


step8
//寫完控制層再寫serviceI層
public Map<String,Object> getWorksById(HttpServletRequest request);


step9
//再寫serviceImpl層
public xxx{
public Map<String,Object> getWorksById(HttpServletRequest request){
//獲取參數
String worksId =request.getParameter("worksId");
//存放參數到HashMap集合中
Map<String,Object> params =new HashMap<String,Object>();
//存放參數
params.put("worksId",worksId);
//獲取作品信息
Map<String,Object> worksMap= ShowMapper.getWorksById(params);
resuleMap.put("worksMap",worksMap);
return resuleMap;
}
//調用Dao接口
ShowMapper showMapper;
}
step10
//Dao層 showMapper
public Map<String,Object> getWorksById(Map<String,object>params);


step11
//最後一步,編寫sql語句,ShowMapper.xml
<mapper namespace="xx.xxx.dao.ShowMapper">
<select id="getWorksById" paratemerType="java.util.Map" resultType="java.util.Map">
SELECT 
id as worksId
From
xxx
WHERE
XXX
</select>
</mapper>

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