2013-07-03 31 views
1

我正在学习带有HTML5友好标记的JSF。我希望收到文本字段输入一个数字:JSF 2.2适用于数字字段的HTML5友好标记

<form jsf:id="form_item"> 
    <label for="nombre">Nombre:</label><input type="text" jsf:id="nombre" value="#{backend.item.nombre}"/> 
    <label for="edad">Edad:</label> <input type="text" jsf:id="edad" value="#{backend.item.edad}"/> 
    <input type="button" jsf:action="#{backend.addItem}" value="Agregar"/>; 
</form> 

后端豆:

@Named(value = "backend") 
@ViewScoped 
public class Backend implements Serializable{ 

    private Item item; 
    private List<Item> items; 

    /** 
    * Creates a new instance of Backend 
    */ 
    public Backend() { 
     this.items = new ArrayList<>(); 
     this.item = new Item(); 
    } 

    public void addItem(){ 
     this.getItems().add(item); 
    } 

//Setters and getters 

商品豆: 公共类项目{

private String nombre; 
    private Integer edad; 

    public Item(){ 
     this.nombre=""; 
     this.edad=0; 
    } 
//Setters and getters 

该代码产生的Java。 lang.Integer不能转换为java.lang.String。

用h更换输入文本:inputText的作品:

<h:inputText id="edad" value="#{backend.item.edad}"/> 

我必须放弃HTML5友好的标记在这种情况下?

该应用正在运行GF4 Full profile。

回答

0

我终于能够让使用

<input type="text" jsf:id="edad" jsf:value="#{backend.item.edad}"/> 

通过加入JSF这项工作:值属性之前,一切都按预期。 JEE7教程在8.9.1 Using Pass-through Elements中说,“使用http://xmlns.jcp.org/jsf名称空间至少指定其一个属性”,并且示例显示了不带名称空间的value属性。但是,它似乎只有在bean属性是一个String时才有效。

0

无论何时您希望将您的属性设置为“JSF-ish”,您都需要在JSF名称空间中加上前缀。无论如何,我很高兴你找到答案!

Ed