小编Mic*_*tti的帖子

嵌套JSF表达式字符串

我想使用值表达式的动态参数来实现此目的:

<h:dataTable value="#{someBean.someValue}" var="field">
    <h:column>#{anotherBean[field]}</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

这里field'user.name''location.address.zip'或...

可能吗?

请注意,这是一个简单的例子,我对组件ValueExpression不感兴趣dataTable.

现在更新的问题是:如何替换标准的BeanELResolver?

寻找ELUtils:

    ...
    composite.addRootELResolver(IMPLICIT_RESOLVER);
    composite.add(FLASH_RESOLVER);
    composite.addPropertyELResolver(COMPOSITE_COMPONENT_ATTRIBUTES_EL_RESOLVER);
    addELResolvers(composite, associate.getELResolversFromFacesConfig());
    addVariableResolvers(composite, FacesCompositeELResolver.ELResolverChainType.Faces,
            associate);
    addPropertyResolvers(composite, associate);
    composite.add(associate.getApplicationELResolvers());
    composite.addRootELResolver(MANAGED_BEAN_RESOLVER);
    composite.addPropertyELResolver(RESOURCE_RESOLVER);
    composite.addPropertyELResolver(BUNDLE_RESOLVER);
    ...
Run Code Online (Sandbox Code Playgroud)

但我还没有完全理解旋转变压器链......所以我会去学习:)

更新2

这段代码有效;)

public class ExtendedBeanELResolver extends BeanELResolver
{
    @Override
    public Object getValue(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException
    {
        try
        {
            return super.getValue(context, base, property);
        }
        catch(PropertyNotFoundException e)
        {
            try
            {
                Object value = base;

                for(String part …
Run Code Online (Sandbox Code Playgroud)

java el jsf-2

4
推荐指数
1
解决办法
1042
查看次数

MonkeyPatching:PrimeFaces小部件扩展/覆盖

我目前正在使用(工作正常)

PrimeFaces.widget.OverlayPanel.prototype._old_init = PrimeFaces.widget.OverlayPanel.prototype.init;
PrimeFaces.widget.OverlayPanel.prototype.init = function(cfg) 
{
    this._old_init(cfg);
    this.align();
}
Run Code Online (Sandbox Code Playgroud)

但我想使用更具可读性和“ jQuery-ish”的功能,例如完全发明的不现实代码:

PrimeFaces.widget.OverlayPanel.patch(
{
    init: function(cfg) 
    {
        super.init(cfg);
        this.align();
    },

    show: function()
    {
        console.log('blah blah blah');
        super.show();
    }
});
Run Code Online (Sandbox Code Playgroud)

我尝试过,PrimeFaces.widget.Xxx.extend({...})但是在这种情况下,我无法使用super方法。

请记住我对Java语言完全不了解

谢谢

javascript jquery jsf monkeypatching primefaces

3
推荐指数
1
解决办法
2236
查看次数

将PBKDF2盐重新用作IV的AES / GCM:危险吗?

我正在开发一个加密实用程序类,可将其重用于常见操作。

一种非常常见的情况是使用用户提供的密码来加密纯文本。
在这种情况下,我使用PBKDF2派生有效的AES密钥,然后在GCM模式下使用它来加密明文。

一些代码:

// IV_LEN = 96
// ITERATIONS = 1000 ~ 4000
// KEY_LEN = 128 ~ 256
// TAG_LEN = 128
public static String encrypt(byte[] plain, char[] password) throws GeneralSecurityException
{
    SecureRandom rng = SecureRandom.getInstanceStrong();
    byte[] iv = new byte[IV_LEN / 8];
    rng.nextBytes(iv);

    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512");
    SecretKey derivedKey = factory.generateSecret(new PBEKeySpec(password, iv, ITERATIONS, KEY_LEN));
    SecretKey secretKey = new SecretKeySpec(derivedKey.getEncoded(), "AES");

    Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
    c.init(Cipher.ENCRYPT_MODE, secretKey, new GCMParameterSpec(TAG_LEN, iv));

    byte[] encrypted = c.doFinal(plain);

    Encoder encoder = …
Run Code Online (Sandbox Code Playgroud)

java encryption cryptography pbkdf2 aes-gcm

2
推荐指数
1
解决办法
497
查看次数

AES随机密钥生成

我看到许多以这种方式生成密钥的示例:

KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(KEY_LEN);
SecretKey secretKey = generator.generateKey();
Run Code Online (Sandbox Code Playgroud)

我怀疑是否存在以下差异(甚至是概念上的):

byte[] material = new byte[KEY_LEN / Byte.SIZE];
SecureRandom.getInstanceStrong().nextBytes(material);
SecretKey secretKey = new SecretKeySpec(material, "AES");
Run Code Online (Sandbox Code Playgroud)

说这两种方法都是3行,是否有一些实际影响,优先选择第一种?

谢谢

java encryption cryptography aes

2
推荐指数
1
解决办法
425
查看次数

获取两个选定日期之间的星期几

我有两个datetimepickers.所以我希望获得所选值之间的星期几.

示例:date1 = 14/1/2015date2 = 17/1/2015

所以结果应该是: days = Wed. Thu. Fri. Sat.

c# datetime

-4
推荐指数
2
解决办法
951
查看次数