在对四郎类JndiLdapRealm的JavaDoc明确地说,授权是默认禁用,对LDAP服务器的授权应该由用户通过子类化和压倒一切的实现JndiLdapRealm#doGetAuthorizationInfo方法.是否有关于如何做到这一点,包括处理通信/协议与可随时随地LDAP服务器的示例代码?
我试图在心理上将Java EE 6 组,用户和角色的安全概念映射到Apache Shiro的角色,用户和权限的概念,我的理解是它们是不兼容的.
阅读Java EE 6安全教程,似乎模型限制性过于严格:基于每个服务器而不是每个应用程序配置组,这实际上只留下了两个灵活的概念来表达授权机制:用户和角色,存在于简单的1对N关系中.相比之下,Shiro的角色模型,用户和权限更加动态,因为它使得人们能够在注释的代码中硬编码权限,并在事情发生变化或引入新角色时在运行时修改角色到权限的映射.我不知道如何根据Java EE 6模型对容器管理的授权做同样的事情.
我的理解是否正确?因为这意味着使用容器管理的授权不能真正走得太远.
说,我有一个包含C列和N行的表.我想生成一个select语句,表示该表的"连接",数据范围包括M天.结果集应该有C + 1列(最后一个是日期)和NXM行.
澄清事情的简单例子:鉴于下表A:
select * from A;
avalue |
--------+
"a" |
Run Code Online (Sandbox Code Playgroud)
日期范围从2012年10月10日到12日,我想要以下结果集:
avalue | date
--------+-------
"a" | 2012-10-10
"a" | 2012-10-11
"a" | 2012-10-12
Run Code Online (Sandbox Code Playgroud)
(这是我在最终计算任何一天的库存水平时需要的垫脚石,给定起始值和增量)
有没有一种方法可以在Ant中定义始终在每次运行结束时执行的任务?这样的SO问题提供了一种方法,可以在每次运行开始之前执行任何其他目标之前,但是我正在寻找相反的情况。
我的用例是回显一条消息,警告用户是否在运行期间发现了某种情况,但我想确保在最后回显它,以便引起注意。
我有一个视图范围的 JSF托管bean,支持xhtml视图,我使用f:viewParam从URL读取一个参数.
该视图向用户呈现表单.但是,当用户通过按p:commandButton提交表单时,似乎重新创建了视图范围的bean(我添加了@PostConstruct注释来验证这一点),因此不记得从f:viewParam读取的实例变量(见下面的代码).
我最初使用GET导航到视图,其中包含URL参数,但是当用户按下p时发送的POST消息:commandButton不包含URL参数.所以我认为当JSF运行时没有在POST上看到URL参数时,它认为这是一个不同的视图,并且正在重新创建JSF管理的bean.当我将视图范围更改为session-scoped时,代码可以正常工作.
这是代码:
<f:metadata>
<f:viewParam name="invId" value="#{registerBean.invId}"/>
</f:metadata>
<h:form id="registrationForm">
....
<p:commandButton value="register" action="#{registerBean.register}"
icon="ui-icon ui-icon-newwin" ajax="false"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
@ManagedBean
@ViewScoped
public class RegisterBean implements Serializable {
@ManagedProperty(value="#{invId}")
private String invId;
...
Run Code Online (Sandbox Code Playgroud)
事实证明,这与URL参数根本没有关系.在下面的BalusC建议之后,我删除了c:when我的视图使用的标签(依赖于渲染的属性而不是相同的效果),现在不再重新创建视图范围的bean并正确保留invId字段.
以下电话:
(String/format "%s" "a")
Run Code Online (Sandbox Code Playgroud)
...抛出一个"ClassCastException java.lang.String不能在Clojure中转换为[Ljava.lang.Object"异常.
(String/format "%s" (cast Object "a"))
Run Code Online (Sandbox Code Playgroud)
....产生相同的例外.
我有以下示例XML文件:
<a xmlns="http://www.foo.com">
<b>
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
使用XPath表达式/foo:a/foo:b(在其中'foo'正确配置NamespaceContext)我可以正确计算b节点数,并且代码Saxon-HE-9.4.jar在CLASSPATH上和不在时都可以工作.
然而,当我分析了namespace-相同的文件不知道 DocumentBuilderFactory,XPath表达式"/ A/B"正确计数的数量b节点只当Saxon-HE-9.4.jar是没有在CLASSPATH.
代码如下:
import java.io.*;
import java.util.*;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.namespace.NamespaceContext;
public class FooMain {
public static void main(String args[]) throws Exception {
String xmlSample = "<a xmlns=\"http://www.foo.com\"><b></b></a>";
{
XPath xpath = namespaceUnawareXpath();
System.out.printf("[NS-unaware] Number of 'b' nodes is: %d\n",
((NodeList) xpath.compile("/a/b").evaluate(stringToXML(xmlSample, false),
XPathConstants.NODESET)).getLength());
}
{
XPath xpath …Run Code Online (Sandbox Code Playgroud) 有一种方法可以多次执行配方吗?在下面的SSCCE中,该配方仅执行一次:
$ cat Makefile
.PHONY: a b
a: b b
b:
echo "beta"
$ make
echo "beta"
beta
Run Code Online (Sandbox Code Playgroud) 我理解map没有在数组上调用未定义的索引,我知道未定义的索引不同于显式分配'undefined'值的数组索引(它不是吗?).然而,如何区分数组中的空洞和undefined值?
以下代码:
foo.js
var arr = [,,undefined,,,,3,,,4];
console.log("A hole the same as undefined? "+(arr[0]===undefined?"yes":"no"));
var _ignored = arr.map(function(x) {console.log("f called on ["+x+"]");});
Run Code Online (Sandbox Code Playgroud)
...运行时产生:
$ node foo.js
A hole the same as undefined? yes
f called on [undefined]
f called on [3]
f called on [4]
Run Code Online (Sandbox Code Playgroud)
......类似的结果是更换时必须有map有forEach.
在ECMAScript6中,迭代器是一个对象,其next()方法返回一个具有两个属性的对象:{value, done}。例如:
function createIterator(ra) {
let i = 0;
return {
next() {
if (i < ra.length)
return {value: ra[i++],
done: false};
else
return {value: undefined,
done: true};
}
};
}
Run Code Online (Sandbox Code Playgroud)
创建了迭代器后,发现它本身并没有太大用处,因为没有内置语法可利用迭代器。相反,必须执行以下操作:
const it = createIterator(['a', 'b', 'c']);
while (true) {
const o = it.next();
if (o.done)
break;
else
console.log(o.value);
}
Run Code Online (Sandbox Code Playgroud)
另一方面Symbol.iterator,“可迭代”是具有属性的对象,该属性必须是返回迭代器的无参数函数:
function createIterable(ra) {
let it = createIterator(ra);
return {
[Symbol.iterator]() {return it;}
};
}
Run Code Online (Sandbox Code Playgroud)
...,当我们创建一个可迭代对象时,我们终于可以使用以下for of语法:
for (let …Run Code Online (Sandbox Code Playgroud) javascript ×2
shiro ×2
ant ×1
arrays ×1
clojure ×1
date ×1
ecmascript-6 ×1
java ×1
java-ee-6 ×1
jsf ×1
ldap ×1
makefile ×1
postgresql ×1
saxon ×1
sql ×1
viewparams ×1
xml ×1
xpath ×1