第一种:
下面分几步介绍一下:
1.首先是前端jsp的设置
<c:if test="${'1'.equals(btnPrinFlg) }">
<input name="othSaveOffline" id ="othSaveOffline" style="margin-right: 10px;"
type="button" onclick="sendUpdatePo('${ctx}/po/updateSaveOffline.do',false)"
value="更新" ${("518" eq tdpSo.docStatus or "519" eq tdpSo.docStatus
or null eqtdpSo.docStatus) ? "" : "disabled=\"disabled\""}>
</c:if>
这段代码中有两个需要注意的地方:
1.参数btnPrinFlg,btnPrinFlg是添加在数据库中的一个数据(数据的图在下方),
并需要有get set方法的实体类,
目的是当通过不同的方式进入此界面时获取到不同的btnPrinFlg值,以至于在此处的if中作为判断依据,
看此按钮是隐藏还是显示。
2.updateSaveOffline.do是与后端Controller中的方法进行关联,可以理解成一个特殊的“点击事件”,
也就是当点击此按钮的时候会触发哪一个方法从而实现什么功能。
数据库数据:
2.前端jsp看完后再看后端的处理方式
<c:if test="${'1'.equals(btnPrinFlg) }">
上面也说到了这是第一种显隐的方式,通过if标签判断按钮是否显示。
参考上图数据库中信息,当我们从网页中点击通过一个方式进入此界面后,我们获取他的model,
并在后端进行赋值尽
那么这个 model获取到之后有什么作用呢?请看下图
上步所说到的实体类
public class OfflineStatus {
// 显示标记-打印按钮
private String po_BtnPrinFlg = "";
//get set方法
public String getPo_BtnPrinFlg() {
return po_BtnPrinFlg;
}
public void setPo_BtnPrinFlg(String po_BtnPrinFlg) {
this.po_BtnPrinFlg = po_BtnPrinFlg;
}
}
ps:下面用<>==>来表示执行顺序
当我们通过一个方式进入到此界面之后,上面if中的判断参数便是由此来一步步获取
private OfflineStatus initPoSettingLoad(String model) {
1.<创建实体类对象>==>
OfflineStatus offlineStatus = new OfflineStatus();
2.<调用成员方法getConfigMap>==>
//此处的docStatus为订单状态
String rtnMap = this.getConfigMap(model,"docStatus");
11.<>==>
if (!StringUtils.isBlank(rtnMap)) {
offlineStatus.setModel(model);
offlineStatus.setIsData(true);
// 显示标记-打印按钮
offlineStatus.setPo_BtnPrinFlg ( this.getConfigMap(model,"btnPrinFlg"));
}
}
---------------------------------------------------------------------------------------
3.<得到系统配置的数据>==>
private String getConfigMap(String models,String confType) {
4.<调用getStrConf(实现类)>==>
String value = tdpSysconfigService.getStrConf(models + confType);
10.<>==>
if (StringUtils.isEmpty(value)) {
return "";
}
return value;
}
---------------------------------------------------------------------------------------
5.<>==>
public String getStrConf(Object objCode) {
if(StringUtils.isEmpty(objCode)){
return null;
}
String confCode = StringUtils.toString(objCode);
if(sysConf.isEmpty()){
6.<>==>
this.initCache();
}
9.<>==>
return sysConf.get(confCode);
}
---------------------------------------------------------------------------------------
7.<>==>
private synchronized void initCache(){
if(!sysConf.isEmpty()){
return;
}
Map<String, Object> param = new HashMap<String, Object>();
8.<>==>
List<TdpSysconfig> list = tdpSysconfigMapper.queryTdpSysconfig(param);
String confType = "";
for(TdpSysconfig item:list){
confType = item.getConfType() == null ? "" : item.getConfType();
sysConf.put(item.getConfCode() + confType, item.getConfValue());
}
}
第二种:
<c:if test="${'1'.equals(btnPrinFlg) }">
<input name="othSaveOffline" id ="othSaveOffline" style="margin-right: 10px;"
type="button" onclick="sendUpdatePo('${ctx}/po/updateSaveOffline.do',false)"
value="更新" ${("518" eq tdpSo.docStatus or "519" eq tdpSo.docStatus
or null eqtdpSo.docStatus) ? "" : "disabled=\"disabled\""}>
</c:if>
这第二种方法就是利用disabled,这个属性可以使按钮变灰变得不可点击(效果如下图所示),
而这里使用了三元表达式,通过判断订单的状态来确定按钮是否隐藏。
PS:本人也正在学习的道路上不断前进,如有不对的地方还请各位大佬多多指正。