
2.在你web.xml中加入
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>
3.在jsp页面可以进行调用:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<table border="1" width="80%" align="center">
<tr>
<td>序号</td>
<td>姓名</td>
<td>密码</td>
<td>邮件</td>
</tr>
<c:forEach items="${list}" var="dto" varStatus="statu" >
<c:choose>
<c:when test="${statu.index%2==0}">
<tr bgcolor="red">
<td>${statu.count}</td>
<td>${dto.username}</td>
<td>${dto.password}</td>
<td>${dto.email }</td>
</tr>
</c:when>
<c:otherwise>
<tr>
<td>${statu.count}</td>
<td>${dto.username}</td>
<td>${dto.password}</td>
<td>${dto.email }</td>
</tr>
</c:otherwise>
</c:choose>
js文件的代码放在didFinishLaunchingWithOptions基础原理
能做到通过JS调用和改写OC方法最根本的原因是 Objective-C 是动态语言,OC上所有方法的调用/类的生成都通过 Objective-C Runtime 在运行时进行,我们可以通过类名/方法名反射得到相应的类和方法:
Class class = NSClassFromString("UIViewController")
id viewController = [[class alloc] init]
SEL selector = NSSelectorFromString("viewDidLoad")
[viewController performSelector:selector]
也可以替换某个类的方法为新的实现:
static void newViewDidLoad(id slf, SEL sel) {}
class_replaceMethod(class, selector, newViewDidLoad, @"")
还可以新注册一个类,为类添加方法:
Class cls = objc_allocateClassPair(superCls, "JPObject", 0)
objc_registerClassPair(cls)
class_addMethod(cls, selector, implement, typedesc)
对于 Objective-C 对象模型和动态消息发送的原理已有很多文章阐述得很详细,例如这篇,这里就不详细阐述了。理论上你可以在运行时通过类名/方法名调用到任何OC方法,替换任何类的实现以及新增任意类。所以 JSPatch 的原理就是:JS传递字符串给OC,OC通过 Runtime 接口调用和替换OC方法。这是最基础的原理,实际实现过程还有很多怪要打,接下来看看具体是怎样实现的。
方法调用
require('UIView')
var view = UIView.alloc().init()
view.setBackgroundColor(require('UIColor').grayColor())
view.setAlpha(0.5)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)