多值的JSF管理属性



根据BalusC对这个问题的回答,我想创建一个像这样的托管属性:

@ManagedProperty("#{paramValues.freetext}")
private String[] ftValues;
public String[] getFtValues(){ 
    return ftValues;
}
public void setFtValues(String[] values){
    ftValues = values;
}

在我的项目中,每个托管bean声明和设置都在faces-config.xml文件中完成。按照建议将注释放入代码中不会给我带来任何结果。ftValues总是null,即使我有一个或多个<input name="freetext">是否有可能由于主要配置技术使用XML文件而没有考虑到注释?

我如何把ManagedProperty声明到faces-config.xml ?我试着添加

<managed-property>
    <property-name>ftValues</property-name>
    <property-class>java.lang.String[]</property-class>
    <value>#{paramValues.freetext}</value>
</managed-property>

在适当的托管bean部分中,但是它崩溃并出现这个错误

Bean或属性类java.lang。无法找到管理bean myBean的字符串[]。

事实上,当您在faces-config.xml中声明bean时,注释将被忽略。如果由于某些不清楚的原因不能从faces-config.xml中删除bean,那么您需要删除<property-class>来解决问题。JSF完全可以自己计算出来。

最新更新