我想使用值表达式的动态参数来实现此目的:
<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) 我目前正在使用(工作正常)
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语言完全不了解
谢谢
我正在开发一个加密实用程序类,可将其重用于常见操作。
一种非常常见的情况是使用用户提供的密码来加密纯文本。
在这种情况下,我使用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) 我看到许多以这种方式生成密钥的示例:
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行,是否有一些实际影响,优先选择第一种?
谢谢
我有两个datetimepickers.所以我希望获得所选值之间的星期几.
示例:date1 = 14/1/2015和date2 = 17/1/2015
所以结果应该是: days = Wed. Thu. Fri. Sat.
java ×3
cryptography ×2
encryption ×2
aes ×1
aes-gcm ×1
c# ×1
datetime ×1
el ×1
javascript ×1
jquery ×1
jsf ×1
jsf-2 ×1
pbkdf2 ×1
primefaces ×1