combobox text特殊字符处理_解决SpringBoot+MyBatis框架下页面跳转问题与代码优化处理。...

b8f148f2644f0def05898be09ce23046.png

一、关于页面跳转的疑问

  • 后台「return "/pool/index"」返回的是字符串,会自动寻找名为“index”的页面模板文件是怎样实现的?

答:这是SpringMVC实现的,如果在Action层方法名顶部,不能添加注释“@ResponseBody”否则后台会以数据形式返回到前台
如果action层中的方法,需要返回页面,却添加了“@ResponseBody”注解,就会出现下面问题:

  • 如果想要返回以“.shtml”后缀的模板文件,需要怎样设置?

答:修改application.yml配置文件如下: #################模板参数配置#################thymeleaf:mode: HTML5 prefix: classpath:/templates/ suffix: .shtml servlet: content-type: text/html mvc: static-path-pattern: /** resources: static-locations: classpath:/webapp/, classpath:/META-(换行)INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

  • 注意,不建议在action层,RequestMapping中配置以“.html”结束的请求名。

原因:会与页面文件重复,分不清是文件名还是请求。也不利于后续代码维护。

  • 关于action层返回值是「页面模板文件名」或「redirect:/请求名」

以下面代码为例:

@RequestMapping("/receive-success.shtml")
public String reciveSuccess(HttpServletRequest request,Model model) {
String mobile = (String) request.getSession().getAttribute("mobile");
if(mobile == null) {
return "redirect:/index.shtml"; ----------1
}
return "receiveSuccess"; --------------------2
}

1:后台重定向符号,发起了新的后台请求;此处未处理完成,需要再发送请求,请求内容是「/index.shtml」

2:在工程中寻找指定文件名的页面模板文件;此处已处理完成,只需把已处理好的数据(或者没有数据),发给页面模板文件展示即可(ps:也可以理解为html后缀的页面文件)。

ee16602b5dbd75592f835838408d2f82.png

二、后台错误处理的疑问

在外部审计平台中已实现效果:后台若抛出异常信息{"code","msg"},在某个ErrorAction中统一处理,展现给用户的是一个自定义错误页面,页面风格统一,同时能显示异常信息msg的内容和返回之前正常页面的按钮。

三、关于优化equity项目代码:

用stringMap把所有bean的属性逐一存进去,影响代码可读性,并且写起来也麻烦

方案1:最简单的,在bean中添加一些属性,后台方法查询出来的另一些属性,设置进去。或者根据联合查询,获取需要的属性值。

方案2:担心污染bean的有序性?查询出来的所有属性,按照bean分类存储,thymleaf中用「beanA.属性;beanB.属性;属性」的方式取出来。

方案3:最规范的,使用po「存储object」和vo「展示object」,不同对象的用途不同,缺点是麻烦,如果仅有几个属性不建议这样做。

担心上线后,由于少数后台参数错误导致整个页面错误?

thymleaf中使用下面写法:「bean?.属性」或「属性.」

特殊字符:三角符号

代码建议:

无需实例化 dateUtils

若需要实例化,请加上@Autoweird或@Resource@service注解

a2eb26d74da871c80c7b6007816cd319.png

四、页面代码优化:

thymleaf模板注意事项

注意:

下面这段代码中{{if type}} {{else} {{/if}}不能滥用,因为若type的类型为int,后台传来的值为「0」则解析时,认为没有获取值,因此表格中会显示为「null」。

{{if type}}<td>${type}</td>{{else}}<td>undefined</td>{{/if}} 

亲测截图:选中行的所有值都为0,其中「权益类型、申请环境、有效期限」字段的类型为int,如果使用下面的代码,效果如下:

            {{if name}}<td>${name}</td>{{else}}<td>null</td>{{/if}} 
            {{if type}}<td>${type}</td>{{else}}<td>null</td>{{/if}} 
            {{if productId}}<td>${productId}</td>{{else}}<td>null</td>{{/if}} 
            {{if channelId}}<td>${channelId}</td>{{else}}<td>null</td>{{/if}} 
            {{if currentCostCount}}<td>${currentCostCount}</td>{{else}}<td>null</td>{{/if}} 
            {{if environmentType}}<td>${environmentType}</td>{{else}}<td>null</td>{{/if}} 
            {{if validPeriod}}<td>${validPeriod}</td>{{else}}<td>null</td>{{/if}} 
            {{if approveStatus}}<td>${approveStatus}</td>{{else}}<td>null</td>{{/if}} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值