thymeleaf th:with 的使用及传参
估计有不少新手进公司后看大佬们的代码,看不明白什么意思,(说的是我自己)就包括了一个前端页面通过th:with属性来发送请求一段代码
例:
/**父类风险分类*/
<select id="riskType" name="riskstyleId"
type="text" onChange="changeQualifications()"
th:with="type=${@type.getparentRiskType()}">
<option value="">请选择风险标准分类</option>
<option th:each="EhsRiskDangerType : ${type}"
th:text="${EhsRiskDangerType.riskDangerTypeName}"
th:value="${EhsRiskDangerType.riskDangerTypeId}"></option>
</select>
/**子类风险分类*/
<select class="layui-select riskSonTypeSelect"
id="riskSonTypeSelect" name="riskBranchFactoryId">
<option value="">请先选择风险子分类</option>
</select>
这段代码可以清楚的看到下拉选中分别具有Id,name,type,th:with,onChange()几个属性,前面几个不用多说,这个th:with属性是用来干嘛呢,它可以在页面加载的时候发送请求,发送请求的路径就是在你的后台代码里找这样一个类。例:
@Service("type")
public class TypeService {
@Autowired
private SysTypeService iSysTypeService;
/**
* 父类隐患类型
* @return
*/
public List<EhsRiskDangerType> getparentRiskType()
{
return iSysTypeService.selectparentByRiskType();
}
}
从而给select下拉选循环赋值,而其中的onChange()事件,就是为了关联另外一个下拉选准备的,一旦下拉选的值发生改变,触发事件,来根据Id发送ajax请求,获取数据,说的再多不如来段代码:
/*给子风险分类赋值*/
function changeQualifications(){
var url;
var riskId=$("#riskType").val();
url = prefix + "/getDeptSelectData?parentId="+ $("#riskType").val();
$.ajax({
cache: true,
type: "GET",
url: url,
async: false,
success: function (data) {
利用each 遍历
/* $.each(data, function(key, value) {
$('#riskSonTypeSelect').empty();
var riskDangerTypeId=value.riskDangerTypeId;
var riskDangerTypeName=value.riskDangerTypeName;
$('#riskSonTypeSelect').append('<option id="'+riskDangerTypeId+'">'+riskDangerTypeName+'</option>');
}); */
利用for循环遍历
$('#riskSonTypeSelect').empty();
for(var i=0;i<data.length;i++){
var riskDangerTypeId = data[i].riskDangerTypeId;
var riskDangerTypeName=data[i].riskDangerTypeName;
$('#riskSonTypeSelect').append
('<optionvalue="'+riskDangerTypeId+'">'+riskDangerTypeName+'</option>');
};
$('#riskSonTypeSelect').selectpicker('refresh');
$('#riskSonTypeSelect').selectpicker('render');
}
});
}
这样既完成了th:with发送请求,又关联了下拉选,美哉美哉。