首先介绍ModelMap和ModelAndView的作用
ModelMap
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
addAttribute(String key,Object value);
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。
modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。
ModelAndView
ModelAndView对象有两个作用:
作用一 设置转向地址,如下所示(这也是ModelAndView和ModelMap的主要区别)
ModelAndView view = new ModelAndView("path:ok");
作用二 用于传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
addObject(String key,Object value);
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示ModelAndView中的数据。
作用介绍完了后,接下来介绍使用方法
ModelMap
ModelMap的实例是由bboss mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。
- public String xxxxmethod(String someparam,ModelMap model)
- {
- //省略方法处理逻辑若干
- //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
- model.addAttribute("key",someparam);
- ......
- //返回跳转地址
- return "path:handleok";
- }
- public String xxxxmethod(String someparam,ModelMap model)
- {
- //省略方法处理逻辑若干
- //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
- model.addAttribute("key",someparam);
- ......
- //返回跳转地址
- return "path:handleok";
- }
ModelAndView
ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。
- public ModelAndView xxxxmethod(String someparam)
- {
- //省略方法处理逻辑若干
- //构建ModelAndView实例,并设置跳转地址
- ModelAndView view = new ModelAndView("path:handleok");
- //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
- view.addObject("key",someparam);
- ......
- //返回ModelAndView对象view
- return view;
- }
补充:
Integer memberId = Integer.parseInt(request.getParameter("memberId"));
Member member = memberService.get(memberId);
return new ModelAndView("view").addObject("member", member);
}
Integer memberId = ServletRequestUtils.getIntParameter(request, "memberId");
memberService.delete(memberId);
return new ModelAndView("redirect:/member/list.html");
}
@RequestMapping(ConstantsForCont.SUB_ADMIN_URL + "/codeConfig.action")
public class CodeConfigController extends PfBaseController{
public final static String DETAIL_CODE_CONFIG_PAGE = "/ebiz/web/admin/jsp/detailCodeConfig";
public final static String EDIT_CODE_CONFIG_PAGE = "/ebiz/web/admin/jsp/codeConfigOperate";
//进入页面
@RequestMapping(params = "action=initCodeConfig")
public ModelAndView initCodeConfig(HttpServletRequest req,
HttpServletResponse resp) {
logger.info("访问/codeConfig.action?action=initCodeConfig");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/ebiz/web/admin/jsp/codeConfig");
return modelAndView;
}
//查询编码列表
@RequestMapping(params = "action=queryCodeConfig")
public void queryCodeConfig(HttpServletRequest req,
HttpServletResponse res) {
logger.info("访问/codeConfig.action?action=queryCodeConfig");
PageQueryModel pageQueryModel = this.getPageQueryModel(req);
String codeType = (String) req.getParameter("codeType");
String code = (String) req.getParameter("code");
String codeLabel = (String) req.getParameter("codeLabel");
if (!StringUtils.isBlank(codeType)) {
pageQueryModel.addParameter("codeType", codeType);
}
if (!StringUtils.isBlank(code)) {
pageQueryModel.addParameter("code", code);
}
if (!StringUtils.isBlank(codeLabel)) {
pageQueryModel.addParameter("codeLabel", codeLabel);
}
pageQueryModel.addParameter("sortCol", "modified_date");
pageQueryModel.addParameter("sortOrder", "desc");
// 根据实体类转换成xml
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[] { PageQueryModel.class, TransResult.class, ValidateError.class,
Response.class });
String xmlRequest = xStreamComponent.toXML(pageQueryModel);
// 访问webservice
logger.info("'调用查询编码信息'webservice开始,参数为:" + xmlRequest);
// 返回该用户指定条件下的订单信息列表
String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
+ ConstantsForCont.SUB_CODECONFIG_URL, "queryCode", xmlRequest);
logger.info("'调用查询投保订单信息'webservice结束,参数为:" + xmlResponse);
try {
this.renderPageGrid(res, xmlResponse);
}
catch (IOException e) {
logger.error(e);
}
}
//查询详细信息
@RequestMapping(params="action=showDetailCodeConfig")
public String showDeatilCodeConfig(ModelMap model,HttpServletRequest req, InsuranceInputDTO insuranceInputDTO,
BindingResult result){
logger.info("访问/codeConfig.action?action=showDetailCodeConfig");
//取得编码流水号
String id=req.getParameter("id");
//通过编码流水号取得编码信息
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[]{Response.class, TransResult.class, EbizCode.class,String.class });
String xmlRequest = xStreamComponent.toXML(id);
logger.info("调用登录webservice,参数为:" + xmlRequest);
String wsResult = WsUtil.invoke(
this.config.getPortalApiUrlPrefix() + ConstantsForCont.SUB_CODECONFIG_URL, "queryDetailCode",
xmlRequest);
logger.info("调用登录webservice,回应为:" + wsResult);
// 组装返回值
Response response = (Response) xStreamComponent.fromXML(wsResult);
TransResult transResult=response.getTransResult();
EbizCode ebizCode=(EbizCode) transResult.getObject();
System.out.println(ebizCode+"899999999999999999999");
model.put("ebizCode", ebizCode);
return DETAIL_CODE_CONFIG_PAGE;
}
/***
* 1.选中某一条属性点击属性修改时,弹出修改属性的界面
* 2.点击新增属性时,弹出新增属性的界面
*/
@RequestMapping(params = "action=addCodeConfig")
public ModelAndView showCodeConfig(HttpServletRequest req, HttpServletResponse res){
logger.info("访问/codeConfig.action?action=addCodeConfig");
ModelAndView modelAndView = new ModelAndView();
String id = (String) req.getParameter("id");
if(StringUtils.isBlank(id)){
id = "";
}
if(!"".equals(id)){
//调用根据propertyId获取一条EBIZ_PRODUCT_PROPERTY记录的webservice
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[] { TransResult.class, ValidateError.class,
Response.class,EbizCode.class ,String.class});
String requestXml = xStreamComponent.toXML(id);
logger.info("调用获得对应的编码详细信息webservice,参数为:" + requestXml);
String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
+ ConstantsForCont.SUB_CODECONFIG_URL, "queryDetailCode", requestXml);
logger.info("调用获得对应的产品属性详细信息webservice,回应为:" + xmlResponse);
Response response = (Response) xStreamComponent.fromXML(xmlResponse);
TransResult transResult=response.getTransResult();
EbizCode ebizCode=(EbizCode) transResult.getObject();
if(ebizCode != null){
modelAndView.addObject(ebizCode);
}
}
modelAndView.setViewName(EDIT_CODE_CONFIG_PAGE);
return modelAndView;
}
/**
* 新增编码或修改编码信息时保存编码信息
*/
@RequestMapping(params = "action=saveEbizCode")
public String saveEbizCode(HttpServletRequest req, HttpServletResponse resp) {
logger.info("访问/codeConfig.action?action=addCodeConfig");
if (req.getParameter("id") != null
&& !"".equals(req.getParameter("id"))) {
EbizCode ebizCode = new EbizCode();
ebizCode.setId(new BigDecimal(req.getParameter("id")));
ebizCode.setCodeType(req.getParameter("editCodeType"));
ebizCode.setCode(req.getParameter("editCode"));
ebizCode.setCodeLabel(req.getParameter("editCodeLabel"));
ebizCode.setModifiedDate(new Date());
if(req.getParameter("editCreatedDate")!=null&&!"".equals(req.getParameter("editCreatedDate"))){
ebizCode.setCreatedDate(new Date(req.getParameter("editCreatedDate")));
}else{
ebizCode.setCreatedDate(new Date());
}
if (req.getParameter("editIsDelete") != null
&& !"".equals(req.getParameter("editIsDelete"))) {
ebizCode.setIsDelete(new Short(req.getParameter("editIsDelete")));
}
ebizCode.setParentCode(req.getParameter("editParentCode"));
if (req.getParameter("editShowOrder") != null
&& !"".equals(req.getParameter("editShowOrder"))) {
ebizCode.setShowOrder(new BigDecimal(req
.getParameter("editShowOrder")));
}
ebizCode.setStandByFlag1(req.getParameter("editStandByFlag1"));
System.out.println(req.getParameter("editStandByFlag1"));
ebizCode.setStandByFlag2(req.getParameter("editStandByFlag2"));
ebizCode.setStandByFlag3(req.getParameter("editStandByFlag3"));
ebizCode.setStandByFlag4(req.getParameter("editStandByFlag4"));
ebizCode.setStandByFlag5(req.getParameter("editStandByFlag5"));
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[] { TransResult.class,
ValidateError.class, Response.class, EbizCode.class,
String.class });
String requestXml = xStreamComponent.toXML(ebizCode);
logger.info("调用修改编码webservice,参数为:" + requestXml);
String xmlResponse = WsUtil.invoke(this.config
.getPortalApiUrlPrefix()
+ ConstantsForCont.SUB_CODECONFIG_URL, "updateCode",
requestXml);
logger.info("调用修改产品属性webservice,回应为:" + xmlResponse);
} else {
EbizCode ebizCode = new EbizCode();
ebizCode.setCodeType(req.getParameter("newCodeType"));
ebizCode.setCode(req.getParameter("newCode"));
ebizCode.setCodeLabel(req.getParameter("newCodeLabel"));
ebizCode.setCreatedDate(new Date());
ebizCode.setModifiedDate(new Date());
if (req.getParameter("newIsDelete") != null
&& !"".equals(req.getParameter("newIsDelete"))) {
ebizCode
.setIsDelete(new Short(req.getParameter("newIsDelete")));
}
ebizCode.setParentCode(req.getParameter("newParentCode"));
if (req.getParameter("newShowOrder") != null
&& !"".equals(req.getParameter("newShowOrder"))) {
ebizCode.setShowOrder(new BigDecimal(req
.getParameter("newShowOrder")));
}
ebizCode.setStandByFlag1(req.getParameter("newStandByFlag1"));
System.out.println(req.getParameter("newStandByFlag1"));
ebizCode.setStandByFlag2(req.getParameter("newStandByFlag2"));
ebizCode.setStandByFlag3(req.getParameter("newStandByFlag3"));
ebizCode.setStandByFlag4(req.getParameter("newStandByFlag4"));
ebizCode.setStandByFlag5(req.getParameter("newStandByFlag5"));
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[] { TransResult.class,
ValidateError.class, Response.class, EbizCode.class,
String.class });
String requestXml = xStreamComponent.toXML(ebizCode);
logger.info("调用增加编码webservice,参数为:" + requestXml);
String xmlResponse = WsUtil.invoke(this.config
.getPortalApiUrlPrefix()
+ ConstantsForCont.SUB_CODECONFIG_URL, "addCode",
requestXml);
logger.info("调用增加产品属性webservice,回应为:" + xmlResponse);
}
return "redirect:/ebiz/admin/codeConfig.action?action=initCodeConfig";
}
/**
* 删除
*/
@RequestMapping(params="action=deleteCodeConfig")
public String deleteEbizCode(HttpServletRequest req, HttpServletResponse resp){
logger.info("访问/codeConfig.action?action=deleteCodeConfig");
String codeId = req.getParameter("id");
XStreamComponent xStreamComponent = XStreamComponent.newInstance();
xStreamComponent.alias(new Class[] { TransResult.class, ValidateError.class,
Response.class,EbizCode.class ,String.class});
String requestXml = xStreamComponent.toXML(codeId);
logger.info("删除一条编码记录webservice,参数为:" + requestXml);
String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
+ ConstantsForCont.SUB_CODECONFIG_URL, "deleteCode", requestXml);
logger.info("删除一条编码记录webservice,回应为:" + xmlResponse);
return "redirect:/ebiz/admin/codeConfig.action?action=initCodeConfig";
}