如何传参,如何获取参数,如何调用参数

今天遇到一个小疑问,大神们勿喷!!!
本人负责的项目需要一个参数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>

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