1

我正在学习带有 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 配置文件中运行。

4

2 回答 2

0

我终于能够使用

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

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

于 2013-07-03T19:37:57.883 回答
0

任何时候你想让你的属性成为“JSF-ish”,你都需要在它前面加上 JSF 命名空间。无论如何,我很高兴你找到了答案!

埃德

于 2014-03-10T21:00:54.523 回答