Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World
Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
Java Spring Boot VS .NetCore (三)Ioc容器处理
Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
Java Spring Boot VS .NetCore (七) 配置文件
Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper
这章介绍下 自定义标签,都知道在处理权限操作的时候,除了后台代码中处理,对于界面上没有权限的人员对于的权限按钮也不会显示
这一点无论是Java 还是.NetCore 也是有很多共同点
Java Freemarker 处理
首先来配置下Freemarker的代码,来设置按钮的显示 隐藏
@Configuration
public class FreeMarkerConfig { @Autowired
private freemarker.template.Configuration configuration; @PostConstruct
public void setSharedVariable() {
try {
configuration.setSharedVariable("freemark", new MyTags());
} catch (Exception e) {
e.printStackTrace();
}
}
}
下面看下MyTags是什么?
public class MyTags extends SimpleHash {
public MyTags() {
put("hasRole", new RoleTag());
}
}
自定义的Tag标签需要继承 SecureTag 这个基类,然后在渲染方法 render处理下就ok
public abstract void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException;
对渲染方法重写实现,实现里面可以根据业务处理了,这里需要,下面结合Shiro来处理下
public abstract class RoleTag extends SecureTag {
String getName(Map params) {
return getParam(params, "name");
}
@Override
public void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException {
boolean show = showTagBody(getName(params));
if (show) {
renderBody(env, body);
}
}
protected abstract boolean showTagBody(String roleName);
}
下面看看模版中怎么来使用 这里以某人具有某个功能点的权限
<@freemark.hasPermission name="system:role:add"> <button class="btn btn-success " type="button" onclick="add();"><i class="fa fa-plus"></i> 添加</button> </@freemark.hasPermission>
其实就这个流程,那么.NetCore中怎么来自定义标签呢?
.NetCore 自定义标签
.NetCore 主要通过继承TagHelper 类来实现自定标签,但是需要以TagHelper标志性结尾,这里跟java类似
public class UosoPagerTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{ }
}
淡然这里可以注入(DI)上先关的服务 处理权限,这里可以不必像java在前端判断显示按钮,这里可以直接根据业务按需要处理渲染的必要性
那么在前端界面上我们怎么处理呢?
首先需要添加控件引用,可以通过 ViewImports 页面中添加
@addTagHelper ExpressUser.Extensions.UosoPagerTagHelper, ExpressUser
然后就可以直接在界面上敲出来相关自定义的控件了,也是非常简单的~
<uoso-pager></uoso-pager>
Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper的更多相关文章
- Java Spring Boot VS .NetCore (一)来一个简单的 Hello World
系列文章 Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filte ...
- Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (三)Ioc容器处理
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (七) 配置文件
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
随机推荐
- STS启动springboot项目,加载不了resources下的配置文件的问题
从这篇博客的评论中找到了解决方案 答案: eclipse的设置中,它默认是不包括resources下的文件的,把它改了就行了 原本用idea没这些事的,不过idea旗舰版到期了,社区版的话,对前端又没 ...
- 在js中绑定onclick事件为什么不加括号,在html代码中必须要加?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 一种使用 sprintf 导致死机的情况
@2019-02-26 [小记] char temp[10] float money; sprintf(temp, "0.2f", money); 以上使用方法可能导致死机,原因是 ...
- 再也不用c++的string了
今天打比赛,觉得写法没错,但死活过不了大样例.调试时发现用cin读入一行臭长臭长的string类型变量时出锅了,原来几千个字符就读进来500个,导致一直WAWAWAWAWA. 最后yyj神犇帮我就删掉 ...
- Oracle 查看链接数、创建索引等的DDL语句
select count(*),machine from v$session group by machine 今天打算将一个数据库的索引在另一个测试库上重新创建一遍,研究了一下. set pages ...
- 连接SQL Server数据库
SqlConnection来连接数据库,注意数据库目标的格式. using System.Data.SqlClient;//载入数据库命名空间 namespace WindowsFormsApplic ...
- Node.js模块化教程
Node.js模块化教程 下载安装node.js 创建项目结构 |-modules |-module1.js |-module2.js |-module3.js|-app.js|-package.js ...
- 异步请求之ajax
一.初识ajax 1.下载引入jQuery <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"& ...
- 苹果手机iOS11中fixed弹出框中input光标错位问题
最近遇到了一个移动前端的BUG:手机弹出框中的输入框focus时光标可能会错位. 刚开始时我完全不知道错误原因是什么,在电脑上调试时完全没有问题,手机上出现问题时也没有找到规律.后来在网上搜索了大量的 ...
- ArcGis地理坐标系转投影坐标系问题的思考与处理
博主又不知道标题该咋写了,凑合看吧. 国庆前帮人处理了这样一个问题:Shapefile数据,加载到ArcMap后呈懵逼状态,缩放功能完蛋.求助者希望对数据进行投影,由CGCS2000的GCS坐标系投影 ...