这几天老师带领我们做一个标准的Java web项目,提供了前端的源码,是一次很好的练习机会,老师带领做的是基于自己引入包的SSM框架,而自己是用springboot管理开发的。做的过程中也学到了很多新的知识,总结一下,希望以后温故而知新。
引入thymeleaf模板需要添加
<html lang="en" xmlns:th="http://www.thymeleaf.org">
因为是老师给的前端静态界面,IDEA中仍然无法提示出th:xxx。后发现原因是最上面的标签影响了
还有一个就是相对/绝对路径的问题
开头为/的路径为绝对路径,引入css/js/…最好使用绝对路径,这样在跳转之后不会找不到上述文件
<link href="/css/main.css" rel="stylesheet" type="text/css" media="all" />
<script src="/js/jquery-1.4.2.min.js" type="text/javascript">script>
自己只是懂一丢丢前端的知识,但开发中用到了几个js/ajax记录一下
由于提交按钮不在form表单中,所以需要一个简单的js来进行提交
<script type="text/javascript">
function submit(){
document.getElementById("institutionCreat").submit();
}
script>
需求是这样的:进入界面会显示所有的机构列表,选中某一机构后,会显示旗下的所有科室列表(如同选中省后显示所有的市)
<script type="text/javascript">
var orgId = null;
$("select[id=selectO]").change(function(){
orgName = $(this).val();
$.ajax({
type:"POST",
async:true, //异步
dataType:"json",
url: "/part01/content/member-section.html", //url地址
data:{"orgName":orgName},
success : function (data) { //请求成功时的返回函数
// var list = JSON.stringify(data);
for (var i = 0; i < data.length; i++) {
var option = document.createElement("option");
$(option).val(data[i]);
$(option).text(data[i]);
$('#dss').append(option);
}
}
});
});
script>
其中第一个select[id=selectO]的意思为找到对应的select,selectO是其id
第二个dss是第二个下拉列表的id
需要注意的是,这个ajax需要放在页面最下方,原因是:页面进行加载,从上到下,如果先加载到ajax,则找不到对应的select(这个还未加载)所以失效。
/**
* 根据机构名称得到旗下的科室列表
* @param orgName
* @param model
* @return
*/
@RequestMapping("/part01/content/member-section.html")
@ResponseBody
public List<String> StuffRelationSectionView(@RequestParam(required=true,name = "orgName") String orgName,
Model model) {
Integer orgId = organizationService.getIdByOrgName(orgName);
List<String> divNameList = sectionService.getSectionDivNameByOrgId(orgId);
List<String> allOrgName = organizationService.getAllOrgName();
model.addAttribute("allOrgName",allOrgName);
model.addAttribute("divNameList",divNameList);
return divNameList;
// return "/part01/content/member-relation.html";
}
用@ResponseBody标记为返回json,直接返回json数据
一般来说,采用th:text标记的date日期都是外国格式,对我们来说很奇怪
<td align="center" th:text="${orgInformation.standAloneDate}">td>
<td align="center" th:text="${#calendars.format(orgInformation.standAloneDate,'yyyy-MM-dd HH:mm:ss')}">td>
很明显的差距,修改方法也很简单,其实不止#calendars,还有其他的一些封装好的类,具体我也没用过。
需要注意的是,如果数据是字符串类型的,判断是否相等需要带引号。尤其注意有时需要用varchar(1)来保存一个魔法值,比如1->博士等等,此时看似是数字,其实是字符串,判断就可能有误。正确事例如下:
<td th:if="${leader.title=='1'}">初级(医(技)师)td>
对于多选项radio,只需将每个radio的name改成需要传的值即可
<td align="left" colspan="4" >
<input type="radio" name="exeType" id="radio5" value="2" />行政部门
<input type="radio" name="exeType" id="radio6" value="1" />卫生监督机构
<input type="radio" name="exeType" id="radio7" value="3" />协作单位
td>
select 将select的name属性改为需要传的值即可
<select name="orgLevel" id="select">
<option value="1">未定级option>
<option value="2">副科级以下option>
<option value="3">副科级option>
<option value="4">科级option>
<option value="5">副处级option>
<option value="6">处级option>
<option value="7">副厅局级option>
<option value="8">厅局级option>
select>
数据回显的意思是,当我们对一个表进行修改时,页面要提前先展示原值,方便修改。
后端逻辑就是传回id,查询出整个表数据,填充到前端界面
简单的一部分就是直接使用th:value填充
<td align="left" colspan="4" >
<input type="radio" name="exeType" id="radio5" value="2" th:field="*{organization.exeType}"/>行政部门
<input type="radio" name="exeType" id="radio6" value="1" th:field="*{organization.exeType}"/>卫生监督机构
<input type="radio" name="exeType" id="radio7" value="3" th:field="*{organization.exeType}"/>协作单位
td>
使用th:field
<select name="edu" id="select">
<option value="1" th:selected="${stuff.edu=='1'}">博士option>
<option value="2" th:selected="${stuff.edu=='2'}">硕士option>
<option value="3" th:selected="${stuff.edu=='3'}">本科option>
<option value="4" th:selected="${stuff.edu=='4'}">大专option>
<option value="5" th:selected="${stuff.edu=='5'}">中专option>
<option value="6" th:selected="${stuff.edu=='6'}">高中option>
<option value="7" th:selected="${stuff.edu=='7'}">初中option>
<option value="8" th:selected="${stuff.edu=='8'}">无学历option>
<option value="9" th:selected="${stuff.edu=='9'}">不详option>
select>
需求如下:我们要对一个表进行修改,需要传递id,此时需要隐藏一个input,存储隐藏的信息
<input type="hidden" th:value="${organization.id}" name="id">
我用的是注解版mybatis,sql直接写在了注解上。
mybatis有很多有用的脚本,在xml版中,通常用<>来写,在注解版中,写法如下
代码一
@Select("")
List<Orgattached> getEquipment(Orgattached orgattached);
代码二
@Select("")
List<StuffComposition> getStuffComposition(StuffComposition stuffComposition);
代码一是简单的一个例子,代码二是一个复杂的例子(意思不是例子二是例子一的加强版)
在字符串中添加