小编Mar*_*tus的帖子

Shiro JndiLdapRealm对LDAP的授权

对四郎类JndiLdapRealm的JavaDoc明确地说,授权是默认禁用,对LDAP服务器的授权应该由用户通过子类化和压倒一切的实现JndiLdapRealm#doGetAuthorizationInfo方法.是否有关于如何做到这一点,包括处理通信/协议与可随时随地LDAP服务器的示例代码?

ldap shiro

5
推荐指数
1
解决办法
3834
查看次数

Java EE 6组,用户和角色-vs- Shiro的角色,用户和权限

我试图在心理上将Java EE 6 ,用户角色的安全概念映射到Apache Shiro角色,用户权限的概念,我的理解是它们是不兼容的.

阅读Java EE 6安全教程,似乎模型限制性过于严格:基于每个服务器而不是每个应用程序配置,这实际上只留下了两个灵活的概念来表达授权机制:用户角色,存在于简单的1对N关系中.相比之下,Shiro的角色模型,用户权限更加动态,因为它使得人们能够在注释的代码中硬编码权限,并在事情发生变化或引入新角色时在运行时修改角色权限的映射.我不知道如何根据Java EE 6模型对容器管理的授权做同样的事情.

我的理解是否正确?因为这意味着使用容器管理的授权不能真正走得太远.

authorization shiro java-ee-6

5
推荐指数
1
解决办法
1851
查看次数

带有日期范围的SQL JOIN表

说,我有一个包含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)

(这是我在最终计算任何一天的库存水平时需要的垫脚石,给定起始值和增量)

sql postgresql date

5
推荐指数
1
解决办法
5365
查看次数

Ant:如何在每次运行结束时始终执行任务(无论目标如何)

有没有一种方法可以在Ant中定义始终在每次运行结束时执行的任务?这样的SO问题提供了一种方法,可以在每次运行开始之前执行任何其他目标之前,但是我正在寻找相反的情况。

我的用例是回显一条消息,警告用户是否在运行期间发现了某种情况,但我想确保在最后回显它,以便引起注意。

ant

5
推荐指数
1
解决办法
2333
查看次数

当未使用URL参数时,在POST上重新创建视图范围的bean

我有一个视图范围的 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字段.

jsf viewparams

5
推荐指数
1
解决办法
2554
查看次数

Clojure ::(String/format"%s""a")::失败并出现ClassCastException

以下电话:

(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)

....产生相同的例外.

clojure

5
推荐指数
1
解决办法
1347
查看次数

namespace-unaware如果Saxon在CLASSPATH上,XPath表达式将失败

我有以下示例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)

java xml xpath saxon

5
推荐指数
1
解决办法
1696
查看次数

使配方执行两次

有一种方法可以多次执行配方吗?在下面的SSCCE中,该配方仅执行一次:

$ cat Makefile 
.PHONY: a b
a: b b 
b:
    echo "beta"
$ make 
echo "beta"
beta
Run Code Online (Sandbox Code Playgroud)

makefile

5
推荐指数
1
解决办法
1964
查看次数

数组中的孔与undefined和map函数

我理解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)

......类似的结果是更换时必须有mapforEach.

javascript arrays

5
推荐指数
1
解决办法
606
查看次数

为什么我们同时需要迭代和迭代器概念?

在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 ecmascript-6

5
推荐指数
1
解决办法
222
查看次数