前端小知识

这些技术点在工作中应该用不到吧(虽然菜鸡,但好歹也是后端),但是万一呢,对吧,万一呢,所以还是记录一下吧。

1.thymeleaf的内联语法

内联语法是为了在JavaScript中访问model中的数据而存在的。

<script th:inline="javascript">
	var adminId = [[${session.admin.getId()}]];
</script>

使用方法就是在script标签中增加thymeleaf的th:inline属性并指明内联到javascript;然后使用[[${}]]内联语句来获取model中的值。上例获取session中admin的id值。

2.发起ajax请求

前端页面js

 var  id = $("[name='delete_but']").val();
 $.get(/*[[@{/admin/blogs/delete}]]*/"/admin/blogs/delete",
    {id : id},
    function (data) {
        if (data == "succ") {
            alert("删除成功");
            location.reload();
        } else {
            alert("删除失败");
        }
});

第一个参数是请求的URL,第二个是入参,第三个是回调函数。这里建议静态路径和thymeleaf模板的路径保持一致,如果值为"",在出现多个""的时候会出问题。

后端Controller

@Controller
@RequestMapping("/admin")
public class BlogController {
	
    @ResponseBody
    @GetMapping("/blogs/delete")
    public String delete(Long id) {

        String result = "";

        int i = blogService.deleteBlog(id);
        if (i == 1) {
            result = "succ";
        } else {
            result = "fail";
        }

        return result;
    }
}

Controller中方法的入参要和前端的入参名字保持一致,不然拿不到数据。@PathVariable是为rest风格而准备的,上面这个例子就不适用。这是个get示例,post请求也差不多,前端get换成post,后端@GetMapping注解换成@PostMapping即可。

下面说说load()方法

$("#table-content").load(/*[[@{/admin/blogs/search}]]*/"/admin/blogs/search", {
            title : $("[name='title']").val(),
            typeId : $("[name='typeId']").val(),
            recommend : $("[name='recommend']").prop('checked'),
            page : $("[name='page']").val()
});

参数同样也有3个,这里没有写回调函数。load()方法会根据参数类型来决定发送GET还是POST请求,参数是字符串为GET,是对象则为POST,所以示例是个POST请求。请求成功后,会将返回的数据填充到jQuery选择器选中的元素中。

3.thymeleaf自定义属性

语法如下

<a class="reply" data-commentid="1" data-nickname="Matt" th:attr="data-commentid=${comment.getId()},data-nickname=${comment.getNickName()}" onclick="startReply(this)">回复</a>

静态属性和动态属性是成对出现的,形如data-value,thymeleaf属性是th:attr="data-value=${xxx}",多个自定义属性用逗号隔开,即th:attr="data-value1=${xxx1},data-value2=${xxx2},..."。在js中取值的方式:

function startReply(obj) {
	var commentId = $(obj).data('commentid');
	var nickName = $(obj).data('nickname');
};

需要注意一点,value中不能出现大写字母,否则拿不到值,可能是一个bug吧。

4.在HTML元素中发起get请求时传递多个参数

thymeleaf支持在HTML元素中直接发起get请求,就像这样

<a href="#" class="ui blue basic button" th:href="@{/holic/index(pageNum=${page.getPageNum()} -1)}" th:unless="${page.isIsFirstPage()}">上一页</a>

后端Controller方法里入参定义为pageNum即可将前端传递的值接收,类似与$.get()。上边是传递一个参数,多个的话呢,也是和自定义属性时一样,用逗号隔开,如下

<a href="#" class="ui button blue basic" th:href="@{/holic/search(pageNum=${page.getPageNum()}+1,query=${query})}" th:unless="${page.isIsLastPage()}">下一页</a>

第一个参数为pageNum,第二个参数为query。

5.表单校验

Semantic UI框架针对表单检验有单独的方法

$('.reply.form').form({
    fields :{
        content : {
            identifier : 'content',
            rules :[{
                type :'empty',
                prompt :'评论不能为空哦~'
            }]
        }
    }
});

如果jQuery选择器选中的元素是个form,这个校验就会自动生效,换句话说,表单验证如果不被调用,只会对form元素生效,对于其他的元素(如div),需要显式地调用使其生效,就像这样

var boo = $('.reply.form').form('validate form');

更多信息可以参考Semantic UI的官网

就先这么多了,有错误的地方欢迎指出~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值