JSF 2.2 HTML5友好标记数字字段

时间:2013-07-03 16:59:47

标签: html5 jsf-2.2 java-ee-7

我正在学习带有HTML5友好标记的JSF。我想在文本字段中收到一个数字:

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

后端bean:

@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

项目bean:     公共类项目{

    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中运行。

2 个答案:

答案 0 :(得分:0)

我终于能够使用

完成这项工作了
<input type="text" jsf:id="edad" jsf:value="#{backend.item.edad}"/>

通过在value属性之前添加jsf:,一切都按预期工作。 JEE7教程在8.9.1 Using Pass-through Elements中说&#34;使用http://xmlns.jcp.org/jsf命名空间&#34;指定其至少一个属性,示例显示没有命名空间的value属性。但似乎这只有在bean属性为String时才有效。

答案 1 :(得分:0)

每当你想让你的属性成为“JSF-ish”时,你需要在它前面添加JSF命名空间。我很高兴你找到了答案!